VBA中Range("4,X")触发1004错误,如何整合工作表函数实现赋值?
解决VBA中Range引用引发的1004应用程序错误
你在替换宏内的复制粘贴代码时,遇到了1004「应用程序定义或对象定义错误」,问题出在Sheets("Averages").Range("4, X").Value这行代码上,核心是Range对象的参数格式使用错误:
错误代码片段
Sub Daily() Dim X As Long X = WorksheetFunction.Lookup(range("Reported_day"), Worksheets("Averages").Rows("3:3"), Worksheets("Averages").Rows("2:2")) Sheets("Cost").Range("Tons").Value = Sheets("Averages").Range("4, X").Value End Sub
问题原因
Range("4, X")的写法完全不符合VBA语法:
- Range的字符串参数必须是合法单元格地址(如
"D4"),无法直接将行号与变量拼接在字符串中; - 你实际要定位的是第4行第X列的单元格,这种按行号、列号定位的场景,应该使用
Cells(行号, 列号)而非Range。
修正后的代码
直接将错误的Range引用替换为Cells即可,保留原Lookup逻辑:
Sub Daily() Dim X As Long ' 若"Reported_day"不在当前激活工作表,建议加上工作表限定(如Sheets("Cost").Range("Reported_day")) X = WorksheetFunction.Lookup(Range("Reported_day"), Worksheets("Averages").Rows("3:3"), Worksheets("Averages").Rows("2:2")) ' 用Cells(行, 列)准确定位目标单元格 Sheets("Cost").Range("Tons").Value = Sheets("Averages").Cells(4, X).Value End Sub
额外注意点
- 旧代码中
Worksheets("Avgerages")存在拼写错误(多了一个r),新代码里的Worksheets("Averages")是正确写法,需保持一致; - 无需使用数组解决该问题,仅为基础的单元格引用语法错误。
内容的提问来源于stack exchange,提问作者Webster
相关产品推荐
相关产品推荐

