VBAarrays问题
我目前正在尝试从MS Project的输出表中input数据。 我已经在worksheet1上生成了这些数据,并且试图重现我在excel页面中创build的内容。
我处于早期阶段,我写了一些代码。 我抬头看了一下错误,我看不出错在哪里。 首先,我只想input数据的一个子部分到一个数组中,以便稍后操作。
debugging突出显示以下行:
如果Worksheets(“Sheet1”)。Cells(i,9).Value = Worksheets(“Sheet2”)。Cells(j,1).Value Then
我是一个C ++程序员,所以我认为我的数组操作是可以的,但是这是我在VBA上的第二天,所以对我来说很简单!
代码如下:
Private Sub CommandButton1_Click() Dim i As Integer Dim j As Integer Dim Arr(2, 11) As Variant j = 5 For i = 1 To 10 If Worksheets("Sheet1").Cells(i, 9).Value = Worksheets("Sheet2").Cells(j, 1).Value Then Arr(0, i) = Worksheets("Sheet1").Cells(i, 4).Value And Arr(1, i) = Worksheets("Sheet1").Cells(i, 6).Value And Arr(2, i) = Worksheets("Sheet1").Cells(i, 7).Value Next i MsgBox ("Value in Array index 2,2 : " & Arr(2, 2)) End Sub
这是否工作:
Private Sub CommandButton1_Click() Dim i As Integer Dim j As Integer Dim Arr(2, 11) As Variant j = 5 For i = 1 To 10 If Worksheets("Sheet1").Cells(i, 9).Value = Worksheets("Sheet2").Cells(j, 1).Value Then Arr(0, i) = Worksheets("Sheet1").Cells(i, 4).Value Arr(1, i) = Worksheets("Sheet1").Cells(i, 6).Value Arr(2, i) = Worksheets("Sheet1").Cells(i, 7).Value End If Next i MsgBox ("Value in Array index 2,2 : " & Arr(2, 2)) End Sub
声明为真时,“IF”声明不需要那些“AND”。 这可能是其中一个问题。 在VB中(不太确定C ++),当你的IF语句为TRUE时,所有的Then
语句都会发生,直到End If
(或者ElseIf
),不需要说“做到这一点,做到这一点,并做到这一点…” ,这只是“做这个,这个,这个,这个”。
If ThisWorkbook.Worksheets("Sheet1").Cells(i, 9).Value = ThisWorkbook.Worksheets("Sheet2").Cells(j, 1).Value Then Arr(0, i) = Worksheets("Sheet1").Cells(i, 4).Value Arr(1, i) = Worksheets("Sheet1").Cells(i, 6).Value Arr(2, i) = Worksheets("Sheet1").Cells(i, 7).Value End If
用这个代替长的IF代码。 你也忘了closures你的IF语句,AND语句不需要,它只是执行THEN之后的所有代码,直到碰到END IF