Тип данных Longptr для VB6 и VB7 - PullRequest
0 голосов
/ 06 июня 2018

С какой проблемой я сталкиваюсь, я хочу распространить один из моих шаблонов Excel VBA.Почти во всех процедурах я назначил тип данных LONG.но я обнаружил, что для VBA7 или 2010 и более поздних версий мы можем использовать тип данных LongPtr для назначения.который обойдет проблему с версиями.будь то 64-битная или 32-битная MS Office.

Но один мой друг указал, что я не могу использовать LongPtr для VB6 или для более низкого офиса 2010 года.

Итак, я попытался использовать его таким образом, чтобы сделать его более удобным для любой офисной версии

#If VBA7 Then
    Dim X As LongPtr
#Else
    Dim X As Long
#End If

Должен ли я использовать вышеуказанное объявление?Это приведет к ошибке?По словам моего друга, это вызовет.Он также добавил, что компилятор будет обходить оператор if.

У меня нет системы для тестирования.

Моя текущая система,

Windows 10, 64-битная

MS Office 2016, 32-битная

Пожалуйста, предложите мне, где мне не хватает концепции.И почему я не могу использовать вышеуказанную декларацию в процедуре?

Спасибо.

1 Ответ

0 голосов
/ 06 июня 2018
#If VBA7 Then
    Dim X As LongPtr
#Else
    Dim X As Long
#End If

Должен ли я использовать вышеуказанное объявление?Будет ли это причиной ошибки?

Да, вы должны использовать вышеуказанное объявление, и оно не вызовет ошибки, даже в древней версии Office.

Однако вам следуетпонять, когда и почему вам нужно использовать LongPtr вместо Long для начала.
Long существует во всех версиях и означает то же самое во всех версиях (32-разрядное целое число).Вы не должны менять его на LongPtr ради этого.Вы должны использовать LongPtr только для указателей или типов данных размером с указатель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...