我对以下子有问题:
Sub prova()
Dim E As String
'Dim H As Range
'Dim G As String
E = range("D3").Value
range("F2").Select
'Set H = Worksheets("Sheet1").range("F3:F100")
range("F3:F100").find(What:=E, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
End Sub
它返回类型不匹配错误。问题与我要搜索变量 E 的范围有关,如果我指定范围或我用名称 (H
设置它)。如果我用columns(6)
或cells
替换range(.....)
(它会在所有电子表格中搜索),它可以工作。如果我指定一个范围,它不起作用。我不明白。
那里有几个问题 -
首先,After: 参数需要一个 Range,而 ActiveCell 的默认属性是 。值,因此您的类型不匹配。
其次,After: 参数必须在 .查找被调用。调用 Range("F2").Select
后,F2 是活动单元格 - 这将为您提供 1004 错误。
我认为您正在寻找更多类似的东西:
Sub prova()
Dim E As Variant
E = Range("D3").Value
Range("F3:F100").Find(What:=E, After:=Range("F3"), LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, _
SearchFormat:=False).Activate
End Sub
您可以找到 的预期参数。在这里找到方法。