0

数据库

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

截图2

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

4

1 回答 1

1

忽略空白的一种非常有用的方法(不循环)是使用SpecialCells. 下面的代码可能比您的问题所需的要长一些,但它是这样编写的

  1. 可适配其他板材
  2. 它将从第 2 行复制非空白,无论它们是值和/或公式
  3. 在没有看到您的代码的情况下,它会复制到新工作簿

代码

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
于 2012-12-26T01:48:29.520 回答