#if, #else, #end if ... что означают хеш-символы в VBA?

Я пишу некоторый код, который проверит, доступен ли файл для извлечения из SharePoint, и, если это не так, предупредит пользователя и скажет ему, что файл используется кем-то другим и кто его имеет. используется

Я наткнулся на фрагмент кода на этом сайте: http://www.xcelfiles.com/IsFileOpen.html

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

#If Not VBA6 Then

'// Xl97

For i = j - 1 To 1 Step -1

    If Mid(strXl, i, 1) = Chr(0) Then Exit For

Next

i = i + 1

#Else

'// Xl2000+

i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)

#End If

Я понимаю, что делает код, но я просто не понимаю, что означает символ "#"?

Другой пример его использования:

hdlFile = FreeFile

Open strPath For Binary As #hdlFile

strXl = Space(LOF(hdlFile))

Get 1, , strXl

Close #hdlFile

Я уверен, что есть действительно очевидный ответ на этот вопрос, но это одна из причин, по которой Google испытывает боль, потому что он настолько расплывчатый.:(

Большое спасибо,

Splat

2 ответа

Решение

Символы хеш-функции представляют команду препроцессора, которая является командами, которые обрабатываются до компиляции, по существу производя динамический / условный код. Эти типы команд часто используются в таких языках, как C/C++, для управления методами кроссплатформенного программирования. Обычно используется для проверки конкретной среды или платформы (например, VBA, Windows, MacOSX и т. Д.), А затем для реализации кода, специфичного для платформы.

http://en.wikipedia.org/wiki/Preprocessor

Принятый ответ верен, что ваш первый пример кода - это директивы компиляции.

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

Откройте "c:\test.txt" для ввода как #hdlFile Input #hdlfile Print #hdlfile Write #hdlfile Close #hdlfile

Хеш указывает, что это директива. Используется для буквального включения или исключения кода из компиляции.

http://msdn.microsoft.com/en-us/library/7ah135z7.aspx

Ой, это для vb.net не так ли. Та же концепция, я думаю.

Другие вопросы по тегам