循环数组:对象变量或未设置块,不支持的属性或方法等

时间:2015-06-15 18:42:32

标签: arrays excel vba excel-vba

我想从一个Excel工作簿(1)中获取多条信息,并使用Select Case将它们插入另一个Excel工作簿(2)中的某些单元格中。我使用一个数组来存储Excel工作簿(1)中的信息,然后想要循环数组以插入不同的值。

这是我到目前为止所做的:

Private Sub CommandButton21_Click() 
Dim MyArray(2 To 6) As Range, Time As Single, Description As String
MyArray(2) = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").Range("C2")
MyArray(3) = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").Range("C3")
MyArray(4) = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").Range("C4")
MyArray(5) = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").Range("C5")
MyArray(6) = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").Range("C6")

Time = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").MyArray(2, 6).Offset(0, 3).value

Description = Workbooks("case_time_report.xlsm").Worksheets("case_time_report.csv").MyArray(2, 6).Offset(0, 8).value

For i = 2 To UBound(MyArray)
        Select Case MyArray(i).text
        Case "Correspondence"
             Cells(i, 1).Offset(0, 18) = Time
             Cells(i, 1).Offset(0, 1) = Description
        Case "VTC"
             Cells(i, 1).Offset(0, 14) = Time
               Cells(i, 1).Offset(0, 1) = Description
     Case "Travel"
              Cells(i, 1).Offset(0, 17) = Time
               Cells(i, 1).Offset(0, 1) = Description
       Case "Telephone Call"
              Cells(i, 1).Offset(0, 18) = Time
               Cells(i, 1).Offset(0, 1) = Description
       Case "Client Meeting"
              Cells(i, 1).Offset(0, 14) = Time
             Cells(i, 1).Offset(0, 1) = Description
        Case "Court Hearing"
              Cells(i, 1).Offset(0, 5) = Time
              Cells(i, 1).Offset(0, 1) = Description
      Case "Motions"
              Cells(i, 1).Offset(0, 16) = Time
              Cells(i, 1).Offset(0, 1) = Description
            End Select
    Next i

End Sub

我一直遇到类似"对象变量或未设置块的问题"和"不支持的属性或方法"。

1 个答案:

答案 0 :(得分:0)

您需要先解决几个非常小的语法问题:

  • Dim MyArray()作为一维数组,但将其用作二维数组。
  • 使用MyArray(i)而不是MyArray(i).text