我是Excel / VBA和StackOverflow的新手。
我正在运行Excel 2007版
我花了一整天时间来解决这个问题,而且我已经筋疲力尽了。在尝试执行简单的VLOOKUP时,我不断收到“应用程序定义或对象定义的错误”。我正在测试这个示例代码以解决我的更大问题:
我需要一个位于Sheet1中的命令按钮,它将具有VBA代码,以根据Sheet1中的单元格值执行表查找。该表在Sheet2中定义。查询(我假设为VLOOKUP)将需要查找名称并发回包含例如“Salary”的数据。然后将此工资信息插入Sheet1上的另一个单元格中。然后,用户可以更新此薪资数字。另一个命令按钮将其导出回表(更新表条目)。
这可能吗?但是我无法通过简单的代码通过VLOOKUP显示消息框(见下文)。
这是我的Sheet1:A1:4
Dave
John
Sara
Steve
这是我的Sheet2,定义为表1(A2:B6)
Name Salary
Dave 2500
John 3500
Sara 4000
Steve 4500
这是我的VBA代码:(注意关于severy“尝试”的评论)
Sub FINDSAL()
Dim E_name As String
Dim Res As Variant
'On Error Resume Next
'Err.Clear
'ThisWorkbook.Sheets("Sheet2").Activate
'ActiveSheet.Range("A1:B5").Select
E_name = "John"
'Res = Application.WorksheetFunction.VLookup(E_name, Sheet1.Range("A2:B5"), 3, False)
Res = Application.WorksheetFunction.VLookup(E_name, Table1, 2, False)
MsgBox "Salary is: $" & Res
End Sub
答案 0 :(得分:0)
试试这段代码。
FINDSAL
从sheet1 A1
获取名称(您可以轻松更改),找到sheet2范围Table1
中的工资,如果找到工资,则将其写入sheet1 {{1} }。
A2
下一步,Sub FINDSAL()
Dim E_name As String
Dim Res As Variant
Dim sh1 As Worksheet, sh2 As Worksheet
Set sh1 = ThisWorkbook.Worksheets("Sheet1")
Set sh2 = ThisWorkbook.Worksheets("Sheet2")
E_name = sh1.Range("A1")
Res = Application.VLookup(E_name, sh2.Range("Table1"), 2, False)
If Not IsError(Res) Then
MsgBox "Salary is: $" & Res
sh1.Range("A2") = Res
Else
MsgBox "Nothing found"
End If
End Sub
从sheet1 updateSalary
读取名称,从工资单A1
读取工资,并尝试更新工作表2上A2
的工资值
Table1
此代码假定所有名称都是唯一的。