用于隐藏具有特定文本的两行之间的行的 ActiveX 复选框

ActiveX check box to hide rows between two rows with specific text

我想使用一个复选框来隐藏包含文本 "XXX" 和 "YYY" 的两行之间的所有行。首先,我定义 public 范围并将其设置为包含此 Sub:

文本的单元格
Public Sub Workbook_Open()

Public D1 As Range, D2 As Range
Set D1 = Sheet3.Columns("A").Find(what:="XXX", LookIn:=xlValues, lookat:=xlWhole)
Set D2 = Sheet3.Columns("A").Find(what:="YYY", LookIn:=xlValues, lookat:=xlWhole)

End Sub

然后我像这样设置 activeX 复选框:

Private Sub Check_Click()

If Check = True Then
Sheet3.Rows(D1.Row + 1 & ":" & D2.Row - 2).Hidden = False
Else:
Sheet3.Rows(D1.Row + 1 & ":" & D2.Row - 2).Hidden = True
End If

End Sub

但是,我不断收到以下错误:需要对象。我是否宣布范围错误?我怎样才能解决这个问题?谢谢

根据我在您 post 下方的评论,尝试这样的操作(未测试

Private Sub Check_Click()
    Dim D1 As Range, D2 As Range

    With Sheet3
        Set D1 = .Columns(1).Find(what:="XXX", LookIn:=xlValues, lookat:=xlWhole)
        Set D2 = .Columns(1).Find(what:="YYY", LookIn:=xlValues, lookat:=xlWhole)

        If D1 Is Nothing Then Exit Sub
        If D2 Is Nothing Then Exit Sub

        If Check = True Then
            .Rows(D1.Row + 1 & ":" & D2.Row - 2).Hidden = False
        Else
            .Rows(D1.Row + 1 & ":" & D2.Row - 2).Hidden = True
        End If
    End With
End Sub

我假设如下

  1. 您正在使用名为 Check
  2. 的 ActiveX 复选框
  3. 你有一个 sheet 代号 Sheet3