【问题标题】:VBA error '1004' when accessing cell values within 2 loops在 2 个循环内访问单元格值时出现 VBA 错误“1004”
【发布时间】:2015-10-20 02:30:35
【问题描述】:

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

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

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 到最后一行

每次访问我所做的单元格都会返回错误

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

MsgBox .Cells(0, 1)

它仍然返回相同的错误。

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

【问题讨论】:

    标签: vba excel combobox listbox userform


    【解决方案1】:

    excel中没有row 0column 0。如果你想要第一行或第一列,它应该从1开始如下:

    .Cells(1,1)
    

    【讨论】:

    • 啊,谢谢,典型的我被这样一个简单的错误卡住了!。非常感谢
    【解决方案2】:

    原因是cells(k, j)使用k = row and j = column指定了一个单元格

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

    k 和 j 必须 >= 1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多