可以用CONCATENATE公式代替&符号吗?

情况

我已经生成了一系列的52个date序列号:-42831到43195分别在B3到BB3(每个date序号增加7)。

以下代码将date序列号转换为格式为“dd-mmm-yy”的date。 下面的代码显示了从17年4月6日到18年4月5日下一行中每年的每周的52个发票date:

Dim intAdd7 As Integer intAdd7 = 0 Dim i As Integer Dim lngSerialDate As Long For i = 2 To 54 'COL C TO COL BB lngSerialDate = Cells(3, i).Value + intAdd7 Cells(4, i) = "=TEXT(" & lngSerialDate + intAdd7 & ",""dd-mmm-yy"")" Next i End Sub 

在这一点上,我必须补充一点,Nekomatic向我提供了和号的位置。

目的

作为VBA语言的一个相对新手,我认为这个&符号作为一个连接操作符。 我在这里学习,并试图学习语言的来龙去脉,但是没有取代CONCATENATE公式来代替&符号。 这是我的尝试:

 Cells(4, i) = "=TEXT(CONCATENATE("lngSerialDate+intAdd7,")""dd-mmm-yy"")" Cells(4, i) = "=TEXT(CONCATENATE("lngSerialDate+intAdd7",)""dd-mmm-yy"")" Cells(4, i) = "=TEXT(CONCATENATE("lngSerialDate+intAdd7",),""dd-mmm-yy"")" 

所有这三次尝试都让VBA咆哮着给我一个编译错误:-Expected-End语句和文本变成红色,variables“lngSerialDate”以蓝色突出显示。

VBA不允许TEXT和CONCATENATE一起使用,还是我的语法错误? 任何帮助,将不胜感激。

舒适地麻木

在您的原始代码中,&符号被用作VBA连接运算符。 CONCATCONCATENATE函数是Excel工作表函数。 Concat也是VBA WorksheetFunction对象的成员,所以在VBA中的等价物是这样的:

 Cells(4, i) = WorksheetFunction.Concat("=TEXT(", lngSerialDate + intAdd7, ",""dd-mmm-yy"")" 

或者每个细分受众群都展开:

 Cells(5, i) = WorksheetFunction.Concat( _ "=TEXT(", _ lngSerialDate + intAdd7, _ ",""dd-mmm-yy"")") 

当然,一个缺点是对于函数所允许的参数数目的限制。 另外,正如共产国际所指出的那样,将date写入单元而不是公式可能会更简单。