Excel 尝试引用其他工作簿中的工作表并将其分配给变量时出现运行时错误1004
我试着在两本不同的工作手册中使用两张纸。 由于某种原因,此代码返回一个错误Excel 尝试引用其他工作簿中的工作表并将其分配给变量时出现运行时错误1004,excel,vba,variable-assignment,Excel,Vba,Variable Assignment,我试着在两本不同的工作手册中使用两张纸。 由于某种原因,此代码返回一个错误 Sub look() Dim Source, Destination As Worksheet Dim Range1_in_Source As Range Dim Range1_in_Destination As Range path = "" :file = "file name" Set Source = Workbooks(2).Worksheets(1) Set Des
Sub look()
Dim Source, Destination As Worksheet
Dim Range1_in_Source As Range
Dim Range1_in_Destination As Range
path = "" :file = "file name"
Set Source = Workbooks(2).Worksheets(1)
Set Destination= ThisWorkbook.Worksheets(1)
当我使用watch检查源时,该赋值返回一个源为空的对象
然而,目的地似乎运作良好-目前
Set Range1_in_Source= Source.Range(Cells(2, 1), Cells(2, 1).End(xlDown))
Set Range1_in_Destination = Destination.Range(Cells(5, 1), Cells(5, 1).End(xlDown))
出于某种原因,最后一行给出了运行时1004错误(对象“\u global”的方法“Range”失败)
单元格引用的是源工作表,而不是目标工作表
我的代码有什么问题作业问题
- 在每个模块的开头使用
选项Explicit
- 避免使用
,尤其是工作表(1)
。他们有自己的工作簿(2)
,甚至更好的名称
名称
主要是避免使用xlDown
xlUp
- 一个常见的错误是忘记限定
,单元格
和行
,甚至是列
范围
- 为提高可读性,请对变量使用较短的有意义的名称
单元格
(例如src.Cells
,dest.Cells
…),因此代码试图在目的地工作表上使用单元格
(对象
,而不是地址)获取范围(对象
,而不是地址)从源代码表中
,这显然是不可能的
代码
Option Explicit
Sub look()
Dim src As Worksheet: Set src = Workbooks(2).Worksheets(1)
Dim dest As Worksheet: Set dest = ThisWorkbook.Worksheets(1)
Dim rngSrc As Range
Set rngSrc = src.Range(src.Cells(2, 1), src.Cells(2, 1).End(xlDown))
Dim rngDest As Range
Set rngDest = dest.Range(dest.Cells(5, 1), dest.Cells(5, 1).End(xlDown))
Dim Path As String: Path = ""
Dim file As String: file = "file name"
End Sub
您已将Source
声明为Variant
。行应该是:将源作为工作表,将目标作为工作表<代码>工作簿(2)
不是一个好主意,它可能与“ThisWorkbook”相同xlDown
也是个坏主意。和单元格
不合格。尝试将完整代码从Sub
发布到Sub
。在你的帖子下面有一个编辑按钮。很好,但即使我将两者声明为工作表,我仍然有完全相同的问题。我不确定代码的其余部分是否与这里的问题相关,但我将非常感谢你在我的案例中提供的帮助。我还有其他问题,如果你有时间回答,我将不胜感激。我真的不明白为什么不使用OptionExplicit是不好的,如果你有一个链接解释它会很好。如果我不知道最后一行,我不知道如何使用xlUp?还是我遗漏了什么?Option Explicit
强制您声明所有变量,这有助于防止意外错误,并帮助您更快地学习和更好地理解语言。在您的情况下,xlUp
可以这样使用:Set rngDest=dest.Range(dest.Cells(5,1),dest.Cells(dest.Rows.Count,1)。End(xlUp))
。