Vba:如何将可见线复制到另一张纸


您可以在 VBA 中使用以下语法仅将可见行从一张工作表复制到另一张工作表:

 SubCopyVisibleRows ()

    Dim sourceWS As Worksheet
    Dim destinationWS As Worksheet
    
    Set sourceWS = ThisWorkbook.Sheets(" Sheet1 ")
    Set destinationWS = ThisWorkbook.Sheets(" Sheet2 ")

    sourceWS.Range(" A1:D999 ").SpecialCells(xlCellTypeVisible).Copy
    destinationWS.Cells(1, 1).PasteSpecial
    Application.CutCopyMode = False
   
End Sub

这个特定的宏将复制Sheet1A1:D999范围内的每个可见行,并将它们粘贴到Sheet2的单元格A1中。

注意Application.CutCopyMode = False行指定在运行宏后应禁用剪切和复制模式。

以下示例展示了如何在实践中使用此语法。

示例:使用 VBA 将可见行复制到另一个工作表

假设表 1中有以下数据集,其中包含有关各种篮球运动员的信息:

现在假设我们对数据集应用一个过滤器,以仅显示球队名称等于 Mavs 或 Spurs 的行:

现在假设我们要使用 VBA 仅将可见单元格从Sheet1复制到Sheet2。

我们可以创建以下宏来执行此操作:

 SubCopyVisibleRows ()

    Dim sourceWS As Worksheet
    Dim destinationWS As Worksheet
    
    Set sourceWS = ThisWorkbook.Sheets(" Sheet1 ")
    Set destinationWS = ThisWorkbook.Sheets(" Sheet2 ")

    sourceWS.Range(" A1:D999 ").SpecialCells(xlCellTypeVisible).Copy
    destinationWS.Cells(1, 1).PasteSpecial
    Application.CutCopyMode = False
   
End Sub

当我们运行这个宏时,我们在Sheet2中收到以下输出:

请注意, Sheet1中可见的每一行都已复制并粘贴到Sheet2中。

注意#1 :我们在宏中使用xlCellTypeVisible来指定我们只想复制可见单元格。

注意#2 :您可以在此处找到 VBA Copy方法的完整文档。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

VBA:如何查找最后使用的行
VBA:根据条件将行复制到另一张纸
VBA:如何仅粘贴值而不格式化

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注