我正在尝试建立一个用户窗体,其中在组合框中选择的值确定偏移量匹配函数的范围。查找值是在同一用户窗体的文本框(TextBox1)中输入的。
If ComboBox1 = "Something" Then
TryRun = Evaluate("Offset(Sheets('Sheet1').Range('B13'),MATCH(TextBox1.Value,Sheets('Sheet1').Range('B14:B33'),0),5)")
End If
当前,这将返回单元格G15的值,但是我要做的只是简单地选择该单元格并将Textbox(TextBox2)的值粘贴到用户窗体中。
这似乎不起作用,
Cells(TryRun).Value = TextBox2
,
因为它找不到“ TryRun”的已定义对象。但是,看到这是指一个单元格,我不知道将其定义为什么。
有人可以帮我吗?
我已经尝试过艾哈迈德(Ahmed)的U Vlookup解决方案来获取此信息:
Private Sub OkButton_Click()
If Combobox1 = "Something" Then
TryRun = WorksheetFunction.VLookup(Val(Textbox1.Text), Range("B14:G33"), 6, False)
If IsEmpty(TryRun) Then
Msgbox "nope"
Textbox2.Text = "No Match found"
Else
Msgbox "almost..."
TextBox2.Value = TryRun
End If
End If
End Sub
这导致Textbox2在用户窗体中返回值= 0,而没有任何内容通过vlookup函数粘贴。
通过删除on error
行,代码将停止一起运行,而错误的行为TryRun = WorksheetFunction.VLookup(Val(Textbox1.Text), Sheets("Stuff").Range("B14:G33"), 6, False)
。导致的错误是:错误424,需要对象。
编辑:
删除Dim TryRun As Long
之后,我遇到了下一个绊脚石:目前,我返回的是“找不到匹配项”,而不是在指定的单元格地址中返回“尝试运行”的值。
编辑2:
不知何故,我现在在else
语句中返回第二个消息框。仍然没有任何价值粘贴在TryRun中。
答案 0 :(得分:0)
“评估”用于运行工作表函数公式,而不是@Tim Williams评论的VBA。否则有很多方法可以解决问题
您可以尝试WorksheetFunction.Match
Dim TryRun As Long
On Error Resume Next
TryRun = WorksheetFunction.Match(TextBox1.Value, Sheet1.Range("B14:B33"), 0)
On Error GoTo 0
If TryRun > 0 Then
TextBox2.Text = Sheet1.Range("G" & 13 + TryRun).Value
Else
TextBox2.Text = " No Match found"
End If
或者尝试WorksheetFunction.Vlookup
On Error Resume Next
TryRun = WorksheetFunction.VLookup(TextBox1.Text, Sheet1.Range("B14:G33"), 6, False)
' Vookup consider 1str column as 1, Col G will be 6
On Error GoTo 0
If IsEmpty(TryRun) Then
TextBox2.Text = " No Match found"
Else
TextBox2.Text = TryRun
End If
请注意,假设仅搜索文本类型数据。对于数字类型的数据,请使用Val(TextBox1.Text)