复制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