大家好!我一直在尝试为以下目的制作 vba 代码:将一系列工作簿(A1:F2 上方的屏幕截图)复制到新工作簿。我已经成功地做到了这一点。我想将另一个标准添加到 vba 代码中。vba 代码应仅复制第 2 行已填充值的列。因此,查看屏幕截图中的示例,这意味着通过运行 vba 代码,我会将范围 A1:A2 保存到新工作簿中, C1:C2,E1:E2。新的工作簿看起来像第二个屏幕截图
任何帮助表示赞赏!提前致谢!
忽略空白的一种非常有用的方法(不循环)是使用SpecialCells
. 下面的代码可能比您的问题所需的要长一些,但它是这样编写的
代码
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