【问题标题】:Set two unrelated ranges in one variable在一个变量中设置两个不相关的范围
【发布时间】:2018-02-25 07:37:02
【问题描述】:

我有 2 个不相关的范围 (С3:D5,F3:G5)。我想将它们设置在一个变量(A)中。 弹出错误“1004”。有可能吗?如果是这样,该怎么做?

     Sub пг()
     Dim book1 As Workbook
     Dim book2 As Workbook
     Dim A As String

    'C3:D5
    'F3:G5

     A = "C3:D5&F3:G5"

     Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\1.xlsx")
     Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\2.xlsx")

    'по листам

     book1.Worksheets("Лист1").Activate
     Range("" + A + "").Copy
     book2.Worksheets("Лист1").Activate
     Range("" + A + "").Select
     Selection.PasteSpecial Paste:=xlPasteAll


     book1.Close


     End Sub

【问题讨论】:

  • A = "C3:D5&F3:G5" 应该是 A = "C3:D5,F3:G5" 但复制/粘贴不适用于非连续范围。只需进行两次复制/粘贴。

标签: vba excel variables range runtime-error


【解决方案1】:

另一种选择

Sub Demo()
    Dim book1 As Workbook, book2 As Workbook
    Dim rng

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\1.xlsx")
    Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\2.xlsx")

    For Each rng In Range("C3:D5,F3:G5").Areas
        book2.Worksheets("Лист1").Range(rng.Address).Value = book2.Worksheets("Лист1").Range(rng.Address).Value
    Next rng
End Sub

注意:以上代码只会粘贴值。

【讨论】:

  • 我给了+1,但你把书的顺序颠倒了,应该是book2.. = book1...
【解决方案2】:

复制/粘贴不适用于非连续范围。您需要分两步完成:

Sub пг()
    Dim book1 As Workbook
    Dim book2 As Workbook

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\1.xlsx")
    Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 6\Процесс создания\Индекс формы команды\Вспомогательные проги\пг\2.xlsx")

    'по листам
    book1.Worksheets("Лист1").Range("C3:D5").Copy book2.Worksheets("Лист1").Range("C3:D5")
    book1.Worksheets("Лист1").Range("F3:G5").Copy book2.Worksheets("Лист1").Range("F3:G5")

    book1.Close
End Sub

【讨论】:

  • 我也在看 ;)
  • 我终于拿到了 Excel-VBA 金牌徽章,现在我拥有了“权力”:)
  • @ShaiRado 没有邪恶mwahaha?你显然只是在装一个仁慈的暴君,隐瞒你真正的统治世界的计划。
  • 大声笑,是mwa,mwa,mwa,mwahaha……等等(你懂的)
猜你喜欢
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
相关资源
最近更新 更多