如何使用.Union在.SpecialCells方法中使用2个“类型”参数

时间:2019-06-08 03:53:57

标签: excel vba

我正在尝试从范围中复制一些数据,但是我无法使其按我需要的方式工作。

我需要xlCellTypeConstants才能跳过该范围内的空白。 我还需要xlCellTypeFormulas复制具有公式范围内的单元格

但是当我运行宏时,出现以下错误:“对象不支持此属性或方法”,在以下代码行中:

Set SumRange = .Range("B5:B29").Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas))

我需要这样做,因为我正在复制数据并通过转置粘贴它,因为我需要在同一行中。

任何想法都将不胜感激。

  Sub WorksheetLoopSummary()
     Dim WS_Count As Integer
     Dim i As Integer
     Dim LastRow As Long
     Dim SumRange As Range

     WS_Count = ActiveWorkbook.Worksheets.Count

     For i = 5 To WS_Count
        With Worksheets(i)
            Set SumRange = .Range("B5:B29").Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas))
            SumRange.Copy
            LastRow = Sheets("Summary").Range("a65536").End(xlUp).row
            Worksheets("Summary").Range("A" & LastRow + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
        End With
     Next i
End Sub

1 个答案:

答案 0 :(得分:-1)

联合是Application对象的一种方法。

您可以执行以下操作(根据需要更改Activesheet)

With ActiveSheet.Range("B5:B29")
    Set SumRange = Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas))
End With

正如@chrisneilsen所提到的:如果不满足这些条件,则将引发错误,需要处理。常见的检查包括在尝试使用SpecialCells之前检查范围是否为空,以及测试是否存在公式。