【问题标题】:vba refer to range in different workbook with "Cells()"vba 使用“Cells()”引用不同工作簿中的范围
【发布时间】:2012-11-22 03:27:03
【问题描述】:

我想引用另一本书中的一个范围,该范围定义自 这行得通:

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

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

谢谢,吉斯。

【问题讨论】:

    标签: vba range


    【解决方案1】:

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

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

    然后引用范围:

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

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

    【讨论】:

      【解决方案2】:

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

      语法类似于:

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

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

      【讨论】:

      • Cells 的调用将引用活动工作表而不是Workbook(filename).Sheets(sheetname) 最好是With Workbook(filename).Sheets(sheetname) ... Set rLookRange = .Range(.Cells(...), .Cells(...))... End With
      猜你喜欢
      • 2013-08-10
      • 2017-08-24
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      相关资源
      最近更新 更多