我知道
Cells(16, 2) = "=TEXT(42831,""dd-mmm-yy"")" 'DISPLAYS 06-Apr-17 IN CELL B16
我正在处理的宏需要将日期序列号(即42831)替换为变量: -
Dim lngDateSerialNo As Long
lngDateSerialNo = 42831
所以现在我已将42831分配给变量lngDateSerialNo
它在这里并不重要,只是说这个变量会在运行时更新,以便给我一个间隔一周的所需日期序列。
我也知道
Cells(18, 2) = "=TEXT(" & lngDateSerialNo & ",""dd-mmm-yy"")" 'displays 06-Apr-17 IN cell B18
并且公平地说我需要上述代码行的帮助。
目标
试着了解一下Ampersand到底在做什么 - 除了给我想要的结果!
在VBA中相对缺乏经验,我对Ampersand的理解是它是一个连接运算符,并且似乎没有任何其他功能。
问题1 有人在那里请你帮我理解为什么这行代码工作得那么好?
问题2
纯粹是学术性的,但如果“&符号”确实是一个串联运算符,那么可以用CONCATENATE公式代替&符吗?
答案 0 :(得分:4)
我对Ampersand的理解是它是一个连接运算符,在生活中似乎没有任何其他功能
基本上是的,除非您还想将&
视为Long
的类型说明符:
Dim a& ' declares a As Long
请有人在那里,请让我理解为什么这行代码能够很好地运作?
因为是编写此类代码的方式
您可能做出的唯一更改是将&
替换为+
,如果两个参数都是字符串,那么它就像&
一样,但您不应该这样做,因为&
以最清晰的方式表达意图。
纯粹是学术性的,但如果确实“&”符号是连接运算符,则可以使用CONCATENATE公式代替&符号
不,因为特定的&
是VBA语法的一部分。您正在VBA中构建一个字符串,此时字符串包含Excel公式并不重要。 VBA没有CONCATENATE
函数,因此在VBA中构建字符串时,不能使用它来代替&
。
但是&
也用于Excel公式语法中的字符串连接,如果您要在双引号内部而不是在外部构建一个&
的公式,则可以将其替换为CONCATENATE
,因为现在它是CONCATENATE
存在的Excel语法。