状况
我已经生成了一系列52个日期序列号: - 单元格B3到BB3中分别为42831到43195(每个日期序列号增加7)。
以下代码将日期序列号转换为格式为" dd-mmm-yy"的日期。以下代码显示了下一行中06年4月6日至5月5日至18月18日的每周每周52个发票日期: -
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 of statement,文本变为红色,变量" lngSerialDate"以蓝色突出显示。
VBA不允许TEXT和CONCATENATE一起操作或我的语法错误吗?任何帮助都会非常感激。
ComfortablyNumb
答案 0 :(得分:2)
在原始代码中,&符号被用作VBA连接运算符。 CONCAT
或CONCATENATE
函数是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"")")
当然,一个缺点是对函数允许的参数数量有限制。此外,正如共产国际指出的那样,将日期写入单元格而不是公式可能更简单。