是否可以使用CONCATENATE公式代替&符号?

时间:2016-08-02 20:21:09

标签: excel vba excel-vba date

状况

我已经生成了一系列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

1 个答案:

答案 0 :(得分:2)

在原始代码中,&符号被用作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"")")

当然,一个缺点是对函数允许的参数数量有限制。此外,正如共产国际指出的那样,将日期写入单元格而不是公式可能更简单。