![]() ![]() To reiterate, you must modify the Declare statement to include the PtrSafe qualifier, and you must update any variables within the statement that need to hold 64-bit quantities so that the variables use 64-bit data types.įollowing is a VBA Declare statement example that is modified to include the PtrSafe keyword and is updated to use the proper 64-bit ( LongPtr) data type: Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr The following VBA Declare statement example is modified to include the PtrSafe qualifier but still use a 32-bit return value: Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long But because the return value has not been updated to a 64-bit data type, the return value is truncated, resulting in an incorrect value returned.įollowing is an unmodified legacy VBA Declare statement example: Declare Function GetActiveWindow Lib "user32" () As Long The PtrSafe qualifier tells the compiler that the Declare statement is targeting 64-bits, so the statement executes without error. On 64-bit Office, this is incorrect because the pointer needs to be 64-bits. The modified VBA example contains the PtrSafe qualifier, but notice that the return value (a pointer to the active window) returns a Long data type. Running the unmodified Declare statement in 64-bit versions of Office will result in an error indicating that the Declare statement does not include the PtrSafe qualifier. To ensure backwards compatibility in VBA7 and earlier use the following construct: #If VBA7 ThenĬonsider the following Declare statement examples. Declare statements that include PtrSafe work correctly in the VBA7 development environment on both 32-bit and 64-bit platforms. The PtrSafe keyword asserts that a Declare statement is safe to run in 64-bit versions of Office.ĭeclare statements with the PtrSafe keyword is the recommended syntax. Implicit conversions of LongLong to smaller integrals are not allowed. Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. The LongLong data type is a signed 64-bit integer that is only available on 64-bit versions of Office. The actual data type that LongPtr resolves to depends on the version of Office that it is running in LongPtr resolves to Long in 32-bit versions of Office, and LongPtr resolves to LongLong in 64-bit versions of Office. VBA now includes the variable type alias LongPtr. ![]() Three important additions are the LongPtr type alias, the LongLong data type, and the PtrSafe keyword. The table at the bottom of this document summarizes the new VBA language features. To address this problem and enable VBA code to work correctly in both 32-bit and 64-bit environments, several language features have been added to VBA. This can result in memory overruns, unexpected results in your code, and possible application failure. The problem with running legacy VBA code in 64-bit Office is that trying to load 64-bits into a 32-bit data type truncates the 64-bit quantity. You can always ask an expert in the Excel Tech Community or get support in the Answers community.You only need to modify VBA code if it runs in the 64-bit version of Microsoft Office. To edit a macro, in the Developer tab, click Macros, select the name of the macro, and click Edit. On the Developer tab, in the Code group, click Stop Recording. On the Developer tab, click Record Macro. In the Customize the Ribbon category, in the Main Tabs list, select the Developer check box, and then click Save. Go to Excel > Preferences… > Ribbon & Toolbar. By default, the Developer tab is not visible, so do the following: Make sure the Developer tab is visible on the ribbon. To learn about how to run a macro, see Run a macro. To learn more about creating macros, see Create or delete a macro. This time, see if anything different happens! Some of the code will probably be clear to you, and some of it may be a little mysterious.Įxperiment with the code, close the Visual Basic Editor, and run your macro again. See how the actions that you recorded appear as code. To edit a macro, in the Code group on the Developer tab, click Macros, select the name of the macro, and click Edit. You can learn a little about the Visual Basic programming language by editing a macro. On the Developer tab, click Stop Recording. Perform the actions you want to automate, such as entering boilerplate text or filling down a column of data. Optionally, enter a name for the macro in the Macro name box, enter a shortcut key in the Shortcut key box, and a description in the Description box, and then click OK to start recording. ![]() In the Code group on the Developer tab, click Record Macro. For more information, see Show the Developer tab. Macros and VBA tools can be found on the Developer tab, which is hidden by default, so the first step is to enable it. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |