2013-05-01 52 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