如何将多维数组转换为日期变量并使用月份函数?

时间:2015-05-06 22:19:01

标签: arrays excel-vba vba excel

我在评论中包含了程序失败的内容。非常感谢您的帮助!谢谢!

Function sumByAcct(month As Integer, acct As String) As Long
    Dim array_length As Integer

    array_length = Application.WorksheetFunction.Count(Sheets("Transactions").Range("A:A")) + 1

    ReDim array_data(array_length, 3) As Variant
    For i = 0 To (array_length)
        array_data(i, 1) = Sheets("Transactions").Range("A" & i + 2) '=> Dates
        array_data(i, 2) = Sheets("Transactions").Range("E" & i + 2) '=> Amounts
        array_data(i, 3) = Sheets("Transactions").Range("H" & i + 2) '=> Bank Account

        Dim func_date As Date
        Dim func_month As Integer
        func_date = CDate((array_data(i, 1))) 'program doesn't run this code
        func_month = month(CDate(func_date)) 'program doesn't run this code

        MsgBox (func_date)
    Next
End Function

1 个答案:

答案 0 :(得分:1)

month没有大写的事实是一个死的赠品。您的输入参数和VBA函数名称之间存在命名冲突。

更改参数名称:

Function sumByAcct(monthNum As Integer, acct As String) As Long

或明确引用Month函数:

func_month = VBA.Month(CDate(func_date))

您可能还应该在模块顶部放置Option Explicit,然后使用Dim i As Long进行跟进。

func_date = CDate((array_data(i, 1)))很好,假设它在A列中找到的所有值都是日期。我要先检查数据本身,要么在尝试投射之前测试它。