среда, 11 сентября 2013 г.

VBA: ошибка "Compile error: Only comments may appear after End Sub, End Function, or End Property"

Иногда приходится писать на новых для себя языках, и местами, не понимая грамматики и/или особенностей, чувствуешь себя как обезьяна с гранатой. Настала и моя очередь.

При запуске процедуры макроса получаю следующую ошибку:
Compile error:
Only comments may appear after End Sub, End Function, or End Property

В моём случае ошибка возникает, когда я пытаюсь адаптировать устаревший код под 64-битный Microsoft Office. Например, в следующем примере:
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
При этом одну из строчек подсвечивает красным и сообщает о вышеуказанной ошибке.

Решается проблема просто. Нужно вставить указанный выше код (или ему подобный) в начало модуля VBA, а именно до описания функций.

Полезно почитать:
http://support.microsoft.com/kb/983043
http://www.jkp-ads.com/articles/apideclarations.asp (перечень заголовков функций для win32 без PtrSafe и для win64 с PtrSafe)

Комментариев нет:

Отправить комментарий