Excel VBA - 在工作表中搜索字符串

3
我有一个Excel工作簿,想在Sheet1中搜索特定的字符串。如果找到了,就输入一个新值。但是,这个表格相当庞大,所以我不认为循环遍历每个单元格会很有效率。那么,我可以通过搜索范围来查找吗?
目前我已经做到了这一步:
Dim rngSearchRange as range

    With ThisWorkbook.Sheets(1)
      Set rngSearchRange = .Range("A2:A" & .Range("A" & Rows.Count).End(xlUp).Row)
    End With

我需要查找一个包含三个值的数组中的第一个值。因此,我该如何在这个范围内搜索特定的字符串,找到其位置,并输入新的值?

我的想法是这样的:

Dim rngFindRange as range
Set rngFindRange = rngSearchRange.Find(var(0), LookIn:=xlValues, lookat:=xlWhole)

var(0)是我想要的数组中的值。但是这行代码并没有给我任何结果。我偏离了吗?

1个回答

3

something like this

Sub FindMe()
    Dim ws As Worksheet
    Dim rngSearchRange As Range
    Dim rngFindRange As Range
    Dim Var
    Dim elemVar
    Var = Array("apples", "oranges", "fruit")
    Set ws = ThisWorkbook.Sheets(1)
    Set rngSearchRange = ws.Range(ws.[a2], ws.Cells(Rows.Count, "A").End(xlUp))
    For Each elemVar In Var
        Set rngFindRange = rngSearchRange.Find(elemVar, LookIn:=xlValues, lookat:=xlWhole)
        If Not rngFindRange Is Nothing Then
            MsgBox elemVar & " found in " & rngFindRange.Address(0, 0)
        Else
            MsgBox elemVar & " not found in:"
        End If
    Next elemVar
End Sub

这看起来很合理。但是我仍然无法从rngFindRange获得任何结果。即使我可以将rngSearchRange添加为监视器,然后查看Cell.Formula(1),并且看到那里的确切值与var(0)中的值完全相同。 - Kenny Bones
好的,刚刚试了一下你的代码。它运行得很好 :) 所以,我需要检查一下我的代码,看看为什么它不起作用。编辑。似乎如果字符串中有空格,它就找不到任何东西?编辑2:那也可以。嗯,我会尽快回复你的。 - Kenny Bones
你正在寻找什么值 - 实际公式还是公式的结果?如果是公式的结果,你是否检查了值中的任何空格? - brettdj
是的,根本没有任何空格。奇怪的是,我可以使用与Val(0)已经具有的完全相同的字符串重新分配其值。而且它能够找到!不过,我确实使用ADODB连接到单独的工作簿来获取原始字符串。然后我将想要的值提取到数组中。但这应该没有关系,对吧? - Kenny Bones
这是一个截图:http://img641.imageshack.us/img641/4043/unledozi.png注意第一个rngFindRange是空的。然后我将Var(0)赋予完全相同的值。然后它就可以工作了!但是,如果我定义一个新的字符串变量,将其分配给原始的Var(0),并搜索它,它也找不到。因此,最有可能是通过ADODB函数对数组中的字符串进行了某些操作。 - Kenny Bones
1
只是为了澄清最后一点。如果我声明一个临时变量,将其分配给rs.GetRows。然后使用t(0,0)将真实变量赋值。 - Kenny Bones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接