复制macrosvba中可见的所有数据

我试图select单元格可见的所有数据区域。

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

我用这个vba来select表单中的所有数据。

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

我试过这个方法,但没有奏效

有没有其他的方式来select与VBA工作表中的所有可见的数据?

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

  • 如果你只关心“常量”(即不是由公式产生的)值,那么:

    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)

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

    因此你也会得到空白(非“数据”)可见单元格

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

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

用这个代替:

ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Copy