【问题标题】:Copy a range to a new workbook with a condition将范围复制到具有条件的新工作簿
【发布时间】:2015-07-31 22:11:49
【问题描述】:

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

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

【问题讨论】:

  • 到目前为止你有什么代码?

标签: excel vba


【解决方案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

【讨论】:

  • 您好,感谢您的回答,它有效!我现在正在尝试微调宏。我已将该请求作为一个新问题发布。这是链接,如果您有任何想法,我将非常感谢您的帮助!谢谢stackoverflow.com/questions/14042340/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多