将范围复制到具有条件的新工作簿

时间:2012-12-25 22:45:45

标签: excel excel-vba vba

database

大家好! 我一直在尝试为以下目的制作vba代码:将工作簿的范围(A1:F2上方的屏幕截图)复制到新工作簿。 我成功实现了这一目标。还有一个额外的标准,我想添加到vba代码。 vba代码应仅复制第2行填充值的列。 因此,查看屏幕截图中的示例,这意味着通过运行vba代码,我将保存到新工作簿的范围A1:A2,C1:C2,E1:E2。 新的worbook看起来像第二个截图

Screenshot2

任何帮助表示赞赏!提前谢谢!

1 个答案:

答案 0 :(得分:1)

忽略空格的一种非常有用的方法 - 没有循环 - 是使用SpecialCells。下面的代码可能比你的问题需要的长一些,但它是写的,所以

  1. 它可以适应其他表格
  2. 它将复制第2行中的非空格,无论它们是值和/或公式
  3. 如果没有看到您的代码,则会将其复制到新工作簿
  4. <强>码

    Sub CopyEm()
    Dim WB As Workbook
    Dim ws As Worksheet
    Dim rng1 As Range
    Dim rng2 As Range
    Dim rng3 As Range
    Set ws = Sheets(1)
    On Error Resume Next
    Set rng1 = ws.Rows(2).SpecialCells(xlConstants)
    Set rng2 = ws.Rows(2).SpecialCells(xlFormulas)
    If rng1 Is Nothing Then
    Set rng3 = rng2
    ElseIf rng2 Is Nothing Then
    Set rng3 = rng1
    Else
    Set rng3 = Union(rng1, rng2)
    End If
    If rng3 Is Nothing Then Exit Sub
    On Error GoTo 0
    Set WB = Workbooks.Add
    rng3.Offset(-1, 0).Copy WB.Sheets(1).[a1]
    rng3.Copy WB.Sheets(1).[a2]
    End Sub