2013-05-01 83 views
1

我在学校学习了C#和VB.Net,但没有学习VBA。使用字符串数组在VBA中“下标超出范围”错误

我想在Access中自动化管道分隔的.csv导出。用户从组合框中选择一个发货日期并点击“导出”,然后应用程序需要完成剩余的工作。问题是,无论我如何在Access中格式化它,它都以短日期格式(m/d/yyyy)导出日期;客户需要的格式是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 
+0

您是否在模块的顶部设置了选项库1?你可以在该行设置一个断点,并检查当地人窗口,以了解dateParts()所持有的... – Marshall 2013-05-01 19:31:54

回答

4

我想你会需要你的数组REDIM到正确的长度使用它之前,像这样:

ReDim dateParts(3) 

之前,你可以使用它。

+0

谢谢!这工作 – cacklen 2013-05-01 19:55:13