用VBA实现VLOOKUP功能?

想在输入商品名称后,自动出现价格和编号,需要输入的商品名的区域是SHEET1的E5:E30
结果对应在G5:G30
数据位置是在SHEET3,商品是H5开始,编号是I5开始,价格是J5开始

望高手赐码,需要输入商品后自动填充,而不是添加按钮,商品删除后,对应的价格和编号也要删除
另外应为输商品时用的是窗体,所以能不能在TEXTBOX1里出现商品名时,将价格和编号分别引用到TEXTBOX2和TEXTBOX3里

VLOOKUP是Excel中的函数,可以在VBA中使用WorksheetFunction对象来调用它。以下是一个示例代码,它使用VLOOKUP函数来查找一个值,并返回其在另一个区域中对应的值:

vbnet
Copy code
Function MyVlookup(lookup_value As Variant, table_array As Range, col_index As Long, Optional range_lookup As Variant) As Variant
MyVlookup = WorksheetFunction.VLookup(lookup_value, table_array, col_index, range_lookup)
End Function
在这个代码中,lookup_value是要查找的值,table_array是要查找的表格区域,col_index是要返回值的列数,range_lookup是可选的参数,指定查找方式。该函数返回一个Variant类型的值。

使用这个函数的示例代码如下:

vbnet
Copy code
Sub test_vlookup()
Dim lookup_value As Variant
Dim table_array As Range
Dim col_index As Long
Dim result As Variant

' 设置要查找的值
lookup_value = "B"

' 设置要查找的表格区域
Set table_array = Range("A1:B4")

' 设置要返回值的列数
col_index = 2

' 调用MyVlookup函数进行查找
result = MyVlookup(lookup_value, table_array, col_index, False)

' 输出结果
MsgBox result
End Sub
在这个代码中,我们首先设置要查找的值、要查找的表格区域和要返回值的列数,然后调用MyVlookup函数进行查找,并将结果输出到一个消息框中追问

代码运行不成功

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-02-26
以下是一个实现VLOOKUP功能的VBA代码,它会在SHEET1中的E5:E30区域寻找输入的商品名称,并将对应的价格和编号填充到TEXTBOX2和TEXTBOX3中。
Private Sub TextBox1_Change()
Dim productName As String
Dim productPrice As Variant
Dim productID As Variant
Dim lookupRange As Range

'获取输入的商品名称
productName = TextBox1.Text

'设置查找范围
Set lookupRange = Sheets("SHEET3").Range("H5:J30")

'使用VLOOKUP函数查找商品价格和编号
productPrice = Application.VLookup(productName, lookupRange, 3, False)
productID = Application.VLookup(productName, lookupRange, 2, False)

'将价格和编号填充到TEXTBOX2和TEXTBOX3中
TextBox2.Text = productPrice
TextBox3.Text = productID
End Sub
请将代码复制粘贴到窗体的代码编辑器中,并将TEXTBOX1,TEXTBOX2和TEXTBOX3的名称替换为你的窗体中实际使用的控件名称。同时请确保SHEET1,SHEET2和SHEET3的名称正确,并且数据位置与代码中的位置相匹配。追问

数据可以匹配到,但是要在TEXTBOX中执行按键操作才能显示,没法自动显示,比如要随便往框里按个键才会显示,和我之前做的那个一样不自动刷新数值

本回答被提问者采纳