VBA阵列问题

时间:2015-07-28 14:29:33

标签: arrays excel vba excel-vba

我目前正在尝试从MS Project的导出表中输入数据。我已经在工作表1上生成了数据,我试图重现我在excel页面中创建的内容。

我处于早期阶段,我已经编写了一些代码。我查了一下错误,我看不出哪里出错了。首先,我只想将数据的子部分输入到数组中,以便稍后对其进行操作。

调试突出显示以下行:

如果是工作表(“Sheet1”)。单元格(i,9).Value =工作表(“Sheet2”)。单元格(j,1).Value则

我是一名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

2 个答案:

答案 0 :(得分:1)

这是否有效:

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),无需说“执行此操作,并做到这一点,并做到这一点......“,这只是”做这个,这个,这个,这个“。

答案 1 :(得分:0)

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代码。你也忘了关闭你的IF语句,并且不需要AND语句,它只是在那之后执行所有代码直到它命中并且END IF