复制宏vba可见的所有数据

时间:2016-07-28 00:41:10

标签: excel vba excel-vba macros

我正在尝试选择单元格可见的所有数据区域。

   Range(Selection, Selection.SpecialCells(xlLastCell)).Select

我用这个vba来选择表格中的所有数据。

Range("A1:A" & Cells(Rows.Count,"A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy 

我尝试过这种方法,但它没有用。

有没有其他方法可以使用vba选择工作表中的所有可见数据?

2 个答案:

答案 0 :(得分:1)

复制工作表中的所有可见数据:

  • 如果你关心"常数" (即不是由公式产生的)仅值,:

    Activesheet.Usedrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Copy

  • 如果你关心"公式"仅限值:

    activesheet.usedrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeFormulas).Copy

  • 如果你关心"常数"和"公式"值:

    union(activesheet.usedrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeconstants),activesheet.usedrange.SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeFormulas)).Copy

    您可以按照以下更具可读性的方式编写:

    With ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible)
        Union(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeFormulas)).Copy
    End With
    

以上所有内容,因为:

  • ActiveSheet.UsedRange

    指的是一个矩形范围,其边界包括所有使用过的单元格

    因此,您将获得不可见的单元格和空白(非"数据")单元格

  • Activesheet.Usedrange.SpecialCells(xlCellTypeVisible)

    指的是矩形范围内的所有可见单元格,其边界包括所有使用过的单元格

    因此你也会得到空白(非"数据")可见细胞

答案 1 :(得分:0)

这只会复制A列中的可见数据。

  

范围(" A1:A"& Cells(Rows.Count," A")。End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy

请改用:

  

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy