在2个循环内访问单元格值时,VBA错误“1004”

时间:2015-07-29 08:14:15

标签: vba excel-vba combobox listbox userform

我最近开始使用VBA ...我正在使用Excel UserForm。我希望当用户在组合框中进行更改时,会自动选择列表框中的某些字段。虽然我没有做任何不寻常的事情,但它仍然返回“应用程序定义的或对象定义的错误”。

我已经搜索了有关此错误的其他问题,但似乎没有一个问题适用于同一类问题。这是代码:

Private Sub ComboBox1_Change()

'first get the current row rule id
lastRow = FindLastRow("Rows Rules")

Dim id, i, k As Integer

For i = 2 To lastRow
    If Sheets("Rows Rules").Cells(i, 2) = ComboBox1.Text Then
        id = Sheets("Rows Rules").Cells(i, 1)
    End If
Next


'get ISINs for id
With Sheets("Row ISINs")

    'loop  for every isin
    For i = 0 To ListBox1.ListCount
        isin = ListBox1.List(i, 0)
        'check if exists
        lastRow = FindLastRow("Row ISINs")
        'loop to compare  with every record
        For k = 1 To lastRow
            If .Cells(k, 0) = id Then 'error happens here--------------
                If .Cells(k, 1) = isin Then
                    'mark those as selected
                    ListBox1.Selected(i) = True
                End If
            End If
        Next

    Next

End With
End Sub

似乎在第二次循环之后:

  

对于k = 1到lastRow

每次访问我发出的单元格都会返回错误

我也尝试使用MsgBox进行检查:

  

MsgBox .Cells(0,1)

它仍会返回相同的错误。

我不知道它是否与循环或其他我错过的东西有关。任何帮助将不胜感激,谢谢

2 个答案:

答案 0 :(得分:3)

excel中没有第0行第0列。如果您想要第一行或第一列,应从1开始,如下所示:

.Cells(1,1)

答案 1 :(得分:2)

原因是cells(k, j)指定使用k = row和j = column

的单元格

你不能像第一个值为0的数组那样处理它。

k和j必须是> = 1。