我正在使用Excel VBA搜索字符串,例如" CCC"在Excel工作表中。 我使用了显示的简单代码。
但是,我希望VBA选择第一次出现" CCC"找到了。 (就像你手动查找一样)。
如何修改我的代码才能实现这一目标?“
Private Sub CommandButton1_Click()
Dim rng As Range
Set rng = Cells.Find(What:="CCC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
If Not rng Is Nothing Then
MsgBox ("found")
Else
MsgBox ("not found")
End If
End Sub
答案 0 :(得分:3)
要选择单元格,您可以使用Select
方法。因此,如果您有一个Range
对象已设置为您想要的单元格,则可以将Select
方法应用于该对象,即
rng.Select
合并到现有代码中,它可能类似于:
Private Sub CommandButton1_Click()
Dim rng As Range
Set rng = Cells.Find(What:="CCC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
If Not rng Is Nothing Then
MsgBox "found"
rng.Select
Else
MsgBox "not found"
End If
End Sub
答案 1 :(得分:3)
您可以使用rng.Select
,但它需要工作表在顶部活动(或者您首先要激活它,即rng.Parent.Activate)。最简单的方法是使用Application.Goto rng
If Not rng Is Nothing Then
Application.Goto rng
MsgBox ("found")
Else
MsgBox ("Not found")
End If
答案 2 :(得分:2)
Private Sub CommandButton1_Click()
Range("A1").select
Cells.Find(What:="CCC", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).activate
activcecell.select
If Not rng Is Nothing Then
MsgBox ("found")
Else
MsgBox ("not found")
End If
End Sub
使用activecell.select将选择您的第一个查找单元格。