使用字符串数组在VBA中“下标超出范围”错误

时间:2013-05-01 19:21:05

标签: vba ms-access access-vba

我在学校学习了C#和VB.Net,但没有学过VBA。

我正在尝试在Access中自动管道分隔的.csv导出。用户从组合框中选择发货日期并单击“导出”,应用程序需要完成剩下的工作。问题是,它是以短日期格式(m / d / yyyy)导出日期,无论我如何在Access中格式化它们;客户所需的格式是mmddyyyy。

我尝试将日期附加到另一个表中的文本字段,但Access不允许我这样做。因此,我在表单上放置了一个文本框,并以正确的格式键入日期,并使用它来填充要导出的表,这是有效的。

我现在要做的是编写一个子程序,以便在用户更改组合框时以正确的格式填充文本框。我在下一行中不断收到“运行时错误9:下标超出范围”:If Len(dateParts(0)) = 2 Then

这是我到目前为止的代码:

Private Sub tbxShipDate_Change()
    Dim strShipDate As String
    Dim strTextDate As String
    Dim dateParts() As String

    strShipDate = Me.tbxShipDate.Value

    If Len(strShipDate) = 10 Then
        strTextDate = strShipDate
        strTextDate = Replace(strTextDate, "/", "")
    Else
        dateParts = Split(strShipDate, "/")

        'check month format
        If Len(dateParts(0)) = 2 Then
            strTextDate = dateParts(0)
        Else
            strTextDate = "0" & dateParts(0)
        End If

        'check day format
        If Len(dateParts(1)) = 2 Then
            strTextDate = strTextDate & dateParts(1)
        Else
            strTextDate = strTextDate & "0" & dateParts(1)
        End If

        'add year
        strTextDate = strTextDate & dateParts(2)
    End If

    Me.tbxTextDate.Value = strTextDate

End Sub

1 个答案:

答案 0 :(得分:4)

我认为在使用之前你需要将数组重新调整到正确的长度,如下所示:

ReDim dateParts(3)

然后才能使用它。