2017-09-16 27 views
0

我有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 
+1

'A = 「C3:D5&F3:G5」'應該是'A = 「C3:D5,F3:G5」'但複製/粘貼不會與非連續範圍工作。只需做兩個複製/粘貼。 – YowE3K

回答

2

另一種選擇

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 

注:上面的代碼將僅粘貼值。

+0

我給+1,但你得到的書籍順序顛倒,應該是'第二冊.. = BOOK1 ... ' –

+0

@ShaiRado - 感謝指點出來,答案編輯。 – Mrig

+0

@ YowE3K - 是!有效點。 – Mrig

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 
+0

我也看;) –

+0

@ShaiRado LOL:d我想知道我是如何得到了+1這麼快! – YowE3K

+0

我終於得到了Excel的VBA金色徽章,現在我有「電源」 :) –

相關問題