我是VBA编码的新手,我正在尝试构建一个Vlookup来连接两个单独的工作簿。提供belwo是我的编码,目前在vlookup行上生成了Object'_Global'失败错误的运行时1004方法'范围'。
Sub dataEntry(agent As Integer, month As Integer)
Dim lookupReturn As Integer
Dim i As Integer
Dim lookupValue As String
Dim lookupBook As String
i = 1
'set excel book to preform vlookup within
lookupBook = sheetName & "-Daily Report Daily-Monthly Grid.xlsx"
'Preforms a Vlookup to fill in data points
Do While Workbooks("Cumulative Agent Ranking Template").Sheets(sheetName).Cells(i, 1).Value <> ""
lookupValue = Workbooks("Cumulative Agent Ranking Template").Sheets(sheetName).Cells(i, 10).Value
lookupReturn = Sheets(sheetName).WorksheetFunction.VLookup(Range("C2"), [lookupBook] & sheet33 & Range("!$A$2" & ":$C" & agent), 2, False)
Workbooks("Cumulative Agent Ranking Template").Sheets(sheetName).Cells(i, 11).Value = lookupReturn
i = i + 1
lookupValue = ""
lookupReturn = 0
Loop
答案 0 :(得分:0)
我认为这里可能存在很多问题。
让我们从最明显的1004错误来源开始,这是不合格的范围对象。
示例:在标准模块中,Range("C2")
始终引用活动工作表。在工作表模块中,它始终引用父工作表。
要解决:完全限定您的范围变量,例如Workbooks(_name_).Worksheets(_sheetname_).Range("C2")
我注意到的另一个潜在问题是您调用Vlookup
的方式。
Sheets(sheetName).WorksheetFunction...
工作表对象没有这样的方法WorksheetFunction
。这是一个应用程序级方法,因此调用它:
WorksheetFunction.Vlookup...
其他问题或潜在问题
未声明的变量:sheetname
(也许这是公共或模块级变量?)
未使用的变量:lookupValue
您已经声明了这一点,并且已经分配了它,但您还没有完成任何内容或在代码中的任何其他地方使用它。 这是您尝试搜索的价值吗?
你的公式的其余部分也非常粗糙,我甚至不会尝试在当前状态下修复它。如果使用更好定义的对象变量,则代码将更易于阅读和理解。如果变量在声明中强类型,你也将受益于intellisense。
这是一个例子,我将留给你根据自己的需要进行研究:
Dim lookupBook as Workbook
Dim lookupRange as Range
Dim lookupValue as String
Set lookupBook = Workbooks("some other file.xlsx")
Set lookupRange = lookupBook.Worksheets("some worksheet").Range("A1:B50")
lookupValue = "cat"
Range("A1").Value = WorksheetFunction.Vlookup(lookupValue, lookupRange, 2, False)