Vba 循环活动单元格的跨工作表参考问题

Vba 循环活动单元格的跨工作表参考问题,vba,excel,Vba,Excel,我试图结合以下2个子循环通过一个范围,取表4活动单元格中的值,并在表“数据库”中“包含”自动筛选该值 这是一个参考问题,因为自动筛选行是出错的行 代码如下: 选项显式 Sub Test2() Dim searchedvalue As Range Sheets("4").Select Range("A2").Select 'Set Do loop to stop when an empty cell is reached. Do Until IsEmpty(ActiveCell)

我试图结合以下2个子循环通过一个范围,取表4活动单元格中的值,并在表“数据库”中“包含”自动筛选该值

这是一个参考问题,因为自动筛选行是出错的行

代码如下:

选项显式

Sub Test2()
Dim searchedvalue As Range

Sheets("4").Select
  Range("A2").Select
  'Set Do loop to stop when an empty cell is reached.
  Do Until IsEmpty(ActiveCell)
      Call FILTER1
      ActiveCell.Offset(1, 0).Select
  Loop
 End Sub

Sub FILTER1()
    Dim searchedvalue As Range
    Set searchedvalue = Sheets("4").ActiveCell.Selection
    Sheets("Database").Range("q2").AutoFilter Field:=17, Criteria1:="=*" & searchedvalue.Value & "*", Operator:=xlAnd
End Sub

最后一行出现“对象不支持此属性或方法”错误。正在筛选的单元格的值是一个范围,该范围按顺序向下移动到a列od表“4”

使用
选项Explicit
做得很好,但是使用
选择方法和
活动单元格
会遇到问题。相反,请使用
范围
变量,如下所示:

Sub Test2()

Dim targetCell As Range

    Set targetCell = ThisWorkbook.Sheets("4").Range("A2")
  'Set Do loop to stop when an empty cell is reached.
  Do Until IsEmpty(targetCell)
      Call FILTER1(targetCell)
      Set targetCell = targetCell.Offset(RowOffset:=1)
  Loop
 End Sub

Sub FILTER1(ByRef searchedCell As Range)
        ThisWorkbook.Sheets("Database").Range("q2").AutoFilter Field:=17, Criteria1:="=*" & searchedCell.Value & "*", Operator:=xlAnd
End Sub

大概,在应用自动筛选后,您还有一些其他代码在
FILTER1
中对数据执行某些操作?

使用
选项Explicit
做得很好,但是使用
选择方法和
活动单元格
会遇到问题。相反,请使用
范围
变量,如下所示:

Sub Test2()

Dim targetCell As Range

    Set targetCell = ThisWorkbook.Sheets("4").Range("A2")
  'Set Do loop to stop when an empty cell is reached.
  Do Until IsEmpty(targetCell)
      Call FILTER1(targetCell)
      Set targetCell = targetCell.Offset(RowOffset:=1)
  Loop
 End Sub

Sub FILTER1(ByRef searchedCell As Range)
        ThisWorkbook.Sheets("Database").Range("q2").AutoFilter Field:=17, Criteria1:="=*" & searchedCell.Value & "*", Operator:=xlAnd
End Sub

大概您还有其他一些代码在应用自动筛选后在
FILTER1
中对数据执行某些操作?

这不是最后一行,而是这一行:
Set searchedvalue=Sheets(“4”).ActiveCell.Selection
工作表没有
ActiveCell
属性-只有
应用程序有此属性-因此您只能引用活动工作表上的活动单元格。@Rory我们如何才能引用在任意工作表上曾经处于活动状态的单元格?@Gary's学生您必须在它处于活动状态时存储对它的引用激活,或者激活工作表,获取对它的引用,然后继续。这不是最后一行,而是这一行:
Set searchedvalue=Sheets(“4”).ActiveCell.Selection
工作表没有
ActiveCell
属性-只有
应用程序有此属性-因此您只能引用活动工作表上的活动单元格。@Rory我们如何才能引用在任意工作表上曾经处于活动状态的单元格?@Gary's学生您必须在它处于活动状态时存储对它的引用激活,或激活工作表,获取对其的引用,然后继续。