我正在尝试选择单元格可见的所有数据区域。
Range(Selection, Selection.SpecialCells(xlLastCell)).Select
我用这个vba来选择表格中的所有数据。
Range("A1:A" & Cells(Rows.Count,"A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Copy
我尝试过这种方法,但它没有用。
有没有其他方法可以使用vba选择工作表中的所有可见数据?
答案 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