大家好! 我一直在尝试为以下目的制作vba代码:将工作簿的范围(A1:F2上方的屏幕截图)复制到新工作簿。 我成功实现了这一目标。还有一个额外的标准,我想添加到vba代码。 vba代码应仅复制第2行填充值的列。 因此,查看屏幕截图中的示例,这意味着通过运行vba代码,我将保存到新工作簿的范围A1:A2,C1:C2,E1:E2。 新的worbook看起来像第二个截图
任何帮助表示赞赏!提前谢谢!
答案 0 :(得分:1)
忽略空格的一种非常有用的方法 - 没有循环 - 是使用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