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

时间:2014-01-30 22:03:13

标签: excel vba vlookup

我是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

1 个答案:

答案 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

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