vba用“Cells()”表示不同工作簿中的范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba用“Cells()”表示不同工作簿中的范围相关的知识,希望对你有一定的参考价值。

我想引用另一本书中的范围,这是从这个作品中定义的:

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错误(应用程序定义或对象定义的错误)。

任何想法如何解决这个问题?

谢谢,Gijs。

答案

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

Dim Ws As Worksheet
Set Ws =  Workbooks(filename).Sheets(sheetname)

然后参考范围:

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

注意点:你在特定的工作表中引用单元格,所以在你的语句中粘贴.Cells之前的点。

另一答案

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

语法如下:

dim rLookRange as Range


set rLookRange = Workbooks(filename).Sheets(sheetname).Range(Cells(startrow, startcol), Cells(rows, cols))

取决于你想做什么(?) 为了比较范围,我通常定义数组并比较这些数组中的值。

以上是关于vba用“Cells()”表示不同工作簿中的范围的主要内容,如果未能解决你的问题,请参考以下文章