这就是事情,我有一个代码,它使用固定工作表中的固定范围来搜索值。我现在需要使工作表变量。到目前为止,我已经尝试了几件没有运气的事情。 我需要搜索的工作表的名称由另一个工作表中的单元格确定。用以下内容替换第3行:“With Sheets(”Sheets(“asd”)。range(“A1”)“)。范围(”B:B“)不起作用。
我的代码:
FindString = W
If Trim(FindString) <> "" Then
With Sheets(**"CARS"**).Range("B:B")
Set Rng = Cells.Find(What:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
Application.Goto Rng, True
Else
MsgBox "Nothing found"
End If
End With
End If
如果需要更多信息,请与我们联系。 谢谢!
答案 0 :(得分:1)
尝试省略一些双引号:使用表格(表格(“asd”)。范围(“A1”))。范围(“B:B”)
<强>解释强>
执行此操作时,您将收到编译错误:预期列表分隔符或):
With Sheets("Sheets("asd").range("A1")").Range("B:B")
这是因为双引号封装了一个字符串文字,因此在这种情况下,字符串文字为"Sheets("
,这会在asd
处引发错误(以及后续错误)。
解决方案是简单地引用Sheets("asd")
对象,不需要在引号内限定该对象:)
注意 Brad会识别代码中的另一个潜在错误,请参阅下面的答案。
答案 1 :(得分:0)
看起来,当您键入With
时,实际上并没有使用它。
With Sheets("CARS").Range("B:B")
Set Rng = Cells.Find(What:=FindString, _ <~~ Cells references the active sheet
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
Application.Goto Rng, True
Else
MsgBox "Nothing found"
End If
End With
你需要用一个圆点开始声明,表示你正在继续建立的参考资料With
With Sheets("CARS").Range("B:B")
Set Rng = .Find(What:=FindString, _ <~~ .Cells
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not Rng Is Nothing Then
Application.Goto Rng, True
Else
MsgBox "Nothing found"
End If
End With
我认为双*
用于强调(Sheets(**"CARS"**)
- &gt; Sheets("CARS")
)
答案 2 :(得分:0)
替换“With Sheets(”Sheets(“asd”)。range(“A1”)“)。范围(”B:B“)
由:
dim VAR_Sheet as string
Var_Sheet=Sheets("asd").range("A1").value
With Sheets(Var_Sheet).Range("B:B")
...code...
end with
也是这样的(同样的结果):
With Sheets(Sheets("asd").range("A1").value).Range("B:B") 'removed quotes that made error