excel vba - range.find方法

时间:2016-02-23 13:11:22

标签: excel-vba vba excel

我遇到以下代码的问题,根据搜索到的字符串返回错误的行

PlayerName始终存在,并且对于命名范围EventString

是唯一的

包含字符串“tt”的单元格x将返回第26行 - 命名范围的第一行 - 不正确

包含字符串“ttt”的相同单元格x将返回第35行 - 正确

Private Sub TextBox10_Change()

Dim PlayerName As String
Dim RowNumber As Integer

PlayerName = Label19.Caption

RowNumber = Range(EventString).Find(PlayerName, , Excel.xlValues).Row
Worksheets(wsEclec).Cells(RowNumber, 117).Value = TextBox10.Value

End Sub

任何帮助将不胜感激

理查德

编辑:

“tt”存在,但textbox10的内容被写入单元格“26,117”

如果我将“tt”改为“ttt”,则将textbox10的内容写入单元格“35,117” the searched table

编辑2:发布了我刚刚发现正在发生的事情的图片

range.find正在寻找第一个部分匹配,所以我需要指定完全匹配

2 个答案:

答案 0 :(得分:1)

使用变量检查是否找到搜索文本,如下所示。

Private Sub TextBox10_Change()
Dim PlayerName As String, RowNumber As Integer, rfound As Range

PlayerName = Label19.Caption
Set rfound = Range(EventString).Find(PlayerName, , Excel.xlValues)

If Not rfound Is Nothing Then
    RowNumber = rFound.Row
    Worksheets(wsEclec).Cells(RowNumber, 117).Value = TextBox10.Value
Else
    MsgBox "Search Value Not Found", vbInformation, "No Matching Text Found"
End If

End Sub

答案 1 :(得分:0)

谢谢所有人 - 斯科特 -

我做了一个错误的假设:.find试图找到完全匹配

这一改变已经完成了

RowNumber = Range(EventString).Find(PlayerName, LookIn:=xlValues, LookAt:=xlWhole).Row