vba在不同工作簿中用“引用”表示范围;单元格();

vba在不同工作簿中用“引用”表示范围;单元格();,vba,range,Vba,Range,我想引用另一本书中的一个范围,从 这项工作: Workbooks(macrofilename).Sheets(IDsheetname).Activate lookRange = Range(Cells(startrow, startcol), Cells(rows, cols)) colno = Application.Match(myName, lookRange, 0) 但我不想激活其他工作表,因此我尝试将工作簿和工作表添加到范围定义中: lookRange = Workbooks(fil

我想引用另一本书中的一个范围,从 这项工作:

Workbooks(macrofilename).Sheets(IDsheetname).Activate
lookRange = Range(Cells(startrow, startcol), Cells(rows, cols))
colno = Application.Match(myName, lookRange, 0)
但我不想激活其他工作表,因此我尝试将工作簿和工作表添加到范围定义中:

lookRange = Workbooks(filename).Sheets(sheetname).Range(Cells(startrow, startcol), Sheets(Cells(rows, cols))
遗憾的是,这会导致1004错误(应用程序定义的错误或对象定义的错误)

有什么办法解决这个问题吗


thanx,Gijs.

您不需要激活工作簿/工作表。 使用“Set”关键字定义范围

语法类似于:

dim rLookRange as Range


set rLookRange = Workbooks(filename).Sheets(sheetname).Range(Cells(startrow, startcol), Cells(rows, cols))
取决于你想做什么(?)

为了比较范围,我通常定义数组并比较这些数组中的值

您可以尝试先参考工作表:

Dim Ws As Worksheet
Set Ws =  Workbooks(filename).Sheets(sheetname)
然后参考范围:

With Ws
    Set rLookRange = Range(.Cells(startrow, startcol), .Cells(rows, cols))
End With

注意点:您指的是特定工作表中的单元格,因此请在语句中的.Cells之前粘贴点。

调用
单元格
将指的是活动工作表,而不是
工作簿(文件名)。工作表(sheetname)
最好是
带有工作簿(文件名)。工作表(sheetname)。。。设置rLookRange=.Range(.Cells(…),.Cells(…)。。。以