2017-05-09 6 views
0

Ich möchte eine bestimmte Zelle finden und einen Wert (kopiert von einem anderen Buch) in einem Zellenoffset aus einer bestimmten Zelle einfügen. schrieb ich den Code, aber die Fehlermeldung erscheintMethod Select (Laufzeitfehler 1004)

Laufzeitfehler 1004 select-Methode Bereich Klasse

In der Codereihe gescheitert: 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 
Sie versuchen Bereich
+2

nicht sicher, warum Sie diesen Fehler erhalten, aber warum verwenden Sie 'Select'? warum nicht einfach 'r.Offset (6, 5) .PasteSpecial xlPasteValues' verwenden? –

+0

@ShareRado der Fehler ist, weil in diesem Moment der aktive WB 'book2' ist. Aber natürlich, wie du gesagt hast, brauchst du hier nicht "Auswählen". –

+0

Danke. Jetzt funktioniert das Programm – maxim465

Antwort

0

Es gibt keine Notwendigkeit zu Activate die book2.Worksheets("54") und später r.Offset(6, 5).Select und wieder Selection verwenden, sollten Sie versuchen, die Copy >>Paste so nah zu halten, wie Sie können:

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

-Code

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

wählen In einem inaktiven Arbeitsblatt ist dies der Grund.
Versuchen Sie es zuerst zu aktivieren oder tun Sie, wie Shai vorgeschlagen hat.

Verwandte Themen