我遇到以下代码的问题,根据搜索到的字符串返回错误的行
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正在寻找第一个部分匹配,所以我需要指定完全匹配
答案 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