在范围内循环的每个循环中所需的对象

时间:2019-09-27 13:47:46

标签: excel vba

因此,我试图基于For Each循环来获取所选单元格的单元格地址。

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    Dim company As String
    company = Range("H12").Value

    Dim companyRange, cell As Range
    companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20")

    For Each cell In companyRange
        If cell.Value <> vbNullString And cell.Value = company Then
                Debug.Print "C : " & cell.Row
        End If
    Next cell
    Application.EnableEvents = True
End Sub

但是,每次我尝试运行此代码时,都会在循环的第一行返回Object required错误。

创建这个问题本来应该是那么琐碎>为什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

这是一个常见的误解:

Dim companyRange, cell As Range

只有cellRangecompanyRangeVariant。您需要:

Dim companyRange as Range, cell as Range

那么您就错过了Set

Set companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20")

当前,companyRange = ThisWorkbook.Sheets("Bleh List").Range("A2:A20")是2D Variant数组,而不是您希望对其进行迭代的Range对象。