获取应用程序定义或对象定义的错误

我是新来的Excel / VBA和StackOverflow。

我正在运行Excel版本2007年

我花了整整一天的时间在这个问题上,我已经用尽了我的耐心。 尝试执行简单的VLOOKUP时,我总是收到“应用程序定义或对象定义的错误”。 我正在testing这个示例代码来解决我的更大的问题:

我需要一个位于Sheet1中的命令button,该button将具有VBA代码以基于Sheet1中的单元格值执行表查找。 该表在Sheet2中定义。 查找(我假设的VLOOKUP)将需要查找名称并发回包含例如“Salary”的数据。 此工资信息然后插入Sheet1上的另一个单元格中。 用户可以更新这个薪水数字。 另一个命令button将其导回到表(更新表条目)。

这可能吗? 不过,我不能通过简单的代码来通过VLOOKUP显示消息框(见下文)。

这是我的Sheet1:A1:4

Dave John Sara Steve 

这是我的Sheet2,它被定义为Table1(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 

试试这个代码。

FINDSAL从sheet1 A1获取名称(可以轻松更改),在sheet2范围Table1find工资,如果find工资 – 将其写入sheet1 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 

下一步, updateSalary从sheet1 A1读取名称并从sheet1 A2读取薪资,并尝试更新sheet2上的Table1薪水值

 Sub updateSalary() Dim E_name As String Dim newSalary As Variant Dim rnd As Range Dim sh1 As Worksheet, sh2 As Worksheet Set sh1 = ThisWorkbook.Worksheets("Sheet1") Set sh2 = ThisWorkbook.Worksheets("Sheet2") With sh1 E_name = .Range("A1") newSalary = .Range("A2") End With Set Rng = sh2.Range("Table1").Find(What:=E_name, LookAt:=xlWhole) If Not Rng Is Nothing Then Rng.Offset(, 1) = newSalary MsgBox "Salaty updated" Else MsgBox "Can't find " & E_name & " in table" End If End Sub 

此代码假定所有名称都是唯一的。