2017-09-16 68 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金色徽章,现在我有“电源” :) –