#if,#else,#end if ...哈希标志在VBA中意味着什么?

时间:2011-06-12 23:46:33

标签: excel variables vba conditional-statements

我正在编写一些代码,用于检查文件是否可以从SharePoint中检出,如果不是,则提醒用户并告诉他们该文件正由其他人使用,以及谁是否正在使用它。

我在这个网站上遇到了一段代码:http://www.xcelfiles.com/IsFileOpen.html#anchor_37

代码本身非常好,似乎在测试场景中工作,所以我打算根据我的目的调整它,但我无法理解所使用的一些语法,因为我以前从未见过它的喜欢

#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

我确信这有一个非常明显的答案,但这是谷歌的一个痛苦之一因为它是如此模糊。 :(

非常感谢,

3 个答案:

答案 0 :(得分:29)

哈希符号表示预处理程序命令,它们是在编译之前处理的命令,主要生成动态/条件代码。这些类型的命令通常用于诸如C / C ++之类的语言中,以管理跨平台编程技术。常见的用法是检查特定环境或平台(即VBA,Windows,MacOSX等),然后实现特定于平台的代码。

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

答案 1 :(得分:4)

哈希表明它是一个指令。 用于从字面上包括或排除编译中的代码。

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

对于vb.net而言,哎呀那不是吧。我认为相同的概念。

答案 2 :(得分:2)

公认的答案是正确的,因为您的第一个代码示例是编译指令。

值得一提的是,如果其他人遇到这个问题,您的第二个代码示例是另一回事。在这种情况下,这些是用于标识文本流的文件编号。您将在以下命令的上下文中看到它们。它们与编译器指令完全无关。

打开“ c:\ test.txt”,输入为#hdlFile 输入#hdlfile 打印#hdlfile 写#hdlfile 关闭#hdlfile