在Excel公式中使用变量

时间:2016-08-14 10:42:25

标签: excel vba excel-2007

我知道

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公式代替&符吗?

1 个答案:

答案 0 :(得分:4)

  

我对Ampersand的理解是它是一个连接运算符,在生活中似乎没有任何其他功能

基本上是的,除非您还想将&视为Long的类型说明符:

Dim a&  ' declares a As Long
  

请有人在那里,请让我理解为什么这行代码能够很好地运作?

因为编写此类代码的方式 您可能做出的唯一更改是将&替换为+,如果两个参数都是字符串,那么它就像&一样,但您不应该这样做,因为&以最清晰的方式表达意图。

  

纯粹是学术性的,但如果确实“&”符号是连接运算符,则可以使用CONCATENATE公式代替&符号

不,因为特定的&是VBA语法的一部分。您正在VBA中构建一个字符串,此时字符串包含Excel公式并不重要。 VBA没有CONCATENATE函数,因此在VBA中构建字符串时,不能使用它来代替&

但是&也用于Excel公式语法中的字符串连接,如果您要在双引号内部而不是在外部构建一个&的公式,则可以将其替换为CONCATENATE,因为现在它是CONCATENATE存在的Excel语法。