2017-05-09 156 views
0

我想找到某個單元格,並在給定單元格的單元格偏移量中插入一個值(從另一本書中複製)。 我寫的代碼,但錯誤彈出方法選擇(運行時錯誤1004)

運行時錯誤1004選擇方法的範圍類失敗

在代碼行:r.Offset(6, 5).Select

Sub связатьцифирь3() 

    Dim book1 As Workbook 
    Dim book2 As Workbook 
    Dim r As Range 
    Dim firstAddress As String 

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 
    Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 4\БАЗА ДАННЫХ\прошлый сезон\Англия\1-ое место\54.xlsx") 
    'переходим в активную страницу откуда надо скопировать данные' 
    book2.Worksheets("54").Activate 
    Range("AP100").Copy 

    'ищемс 
    With book1.Worksheets("Лист1").Range("A1:CV808") 

     Set r = .Find(What:="54") 
     If Not r Is Nothing Then 
      firstAddress = r.Address 
      Do 
       'условие для страны 
       If r.Offset(3, 0).Text = "Англия" Then 
        r.Offset(6, 5).Select 
        Selection.PasteSpecial Paste:=xlPasteValues 
       End If    
       Set r = .FindNext(r)    
      Loop While Not r Is Nothing And r.Address <> firstAddress 
     End If 
    End With 

End Sub 
+2

不確定爲什麼你會得到這個錯誤,但你爲什麼使用'Select'?爲什麼不使用'r.Offset(6,5).PasteSpecial xlPasteValues'? –

+0

@ShaiRado錯誤是因爲那時候活躍的WB是'book2'。但是,當然,正如你所說的那樣,這裏不需要「選擇」。 –

+0

謝謝。現在程序工作 – maxim465

回答

0

有沒有必要Activatebook2.Worksheets("54"),後來r.Offset(6, 5).Select和再次使用Selection,你應該儘量保持Copy >>Paste接近你可以:

book2.Worksheets("54").Range("AP100").Copy 
r.Offset(6, 5).PasteSpecial xlPasteValues 

代碼

Sub связатьцифирь3() 

    Dim book1 As Workbook 
    Dim book2 As Workbook 
    Dim r As Range 
    Dim firstAddress As String 

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx") 
    Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 4\БАЗА ДАННЫХ\прошлый сезон\Англия\1-ое место\54.xlsx") 

    'ищемс 
    With book1.Worksheets("Лист1").Range("A1:CV808") 

     Set r = .Find(What:="54") 
     If Not r Is Nothing Then 
      firstAddress = r.Address 
      Do 
       'условие для страны 
       If r.Offset(3, 0).Value2 = "Англия" Then 
        book2.Worksheets("54").Range("AP100").Copy 
        r.Offset(6, 5).PasteSpecial xlPasteValues 
       End If 
       Set r = .FindNext(r) 
      Loop While Not r Is Nothing And r.Address <> firstAddress 
     End If 
    End With 

End Sub 
0

您嘗試選擇範圍在不活動的工作表中,這是原因。
嘗試先激活或按照Shai的建議進行操作。

相關問題