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()”表示不同工作簿中的范围的主要内容,如果未能解决你的问题,请参考以下文章

excel如何用vba批量提取指定工作表?

Excel VBA - 循环遍历多个文件夹中的文件,复制范围,粘贴到此工作簿中

excel中怎么样按某一列的数据自动分成几张表格(要在不同的工作簿中vba)

从电子表格调用另一个工作簿中的 VBA 函数

Excel VBA 从关闭的工作簿中读取数据,带有 ADODB、动态范围和标题可选

在一个 Excel 工作簿中拆分具有相同名称范围的工作表 - Excel VBA