2016-08-30 1 views
0

Ich versuche, den Inhalt einer Zelle in einer anderen Arbeitsmappe zu kopieren, möchte aber, dass der Benutzer angeben kann, in welcher Zelle er beginnen soll, indem er den Namen von die Zelle in eine Zelle in der aktuellen Arbeitsmappe (in der sich der Makrocode befindet).Excel VBA: Verwenden der Variable anstelle des Elements in Anführungszeichen

(By the way, bitte die elementare Natur dieser Frage sowie offensichtliche Fehler, die ich Vokabulars weise mache entschuldigen, ich bin neu in der Hand auf diese versuchen)

Ich habe kommen mit der folgende Code, aber bekomme eine "Laufzeitfehler '91': Objektvariable oder mit Blockvariable nicht gesetzt" Nachricht.

(Bitte beachten Sie, dass ich auch eine Benutzereingabe an die anderen Arbeitsmappe zu beziehen haben. Gearbeitet Jener Teil.)

Sub OpenWorkBook() 

    Dim Src As Workbook 
    Set Src = Workbooks.Open(Range("B3")) 

    Dim StrtCell As String 
    StrtCell = Range("B4") 

    Src.Sheets("Sheet1").Range(StrtCell).Copy 
    ThisWorkbook.Activate 
    Range("A6").PasteSpecial 

End Sub 

Jede Hilfe wird sehr geschätzt!

+0

Sobald Sie die 'Src'-Arbeitsmappe geöffnet haben, wird das aktive Blatt ein Blatt in dieser Arbeitsmappe sein (welches immer aktiv war, als t zuletzt gespeichert wurde). Also liest dein 'StrtCell' von B4 auf diesem Blatt, nicht das gleiche Blatt wie du es gelesen hast. –

Antwort

1

Am besten qualifizieren Sie Ihre Range()-Aufrufe immer mit einem expliziten Worksheet-Objekt, andernfalls verwenden sie zu diesem Zeitpunkt das Activesheet.

Wenn Sie sich darauf verlassen, dass ein bestimmtes Blatt aktiv ist, wenn eine bestimmte Zeile ausgeführt wird, ist Ihr Code spröde und schwer zu debuggen.

+0

Hallo Tim, Vielen Dank für Ihre schnelle Antwort! Ich freue mich darauf, es bald auszuprobieren und werde Sie auf dem Laufenden halten. –

+0

Hallo nochmal, Tim, es hat perfekt funktioniert! Vielen Dank für die Antwort - und mir geholfen, mein Verständnis zu verbessern! Freundliche Grüße. –

Verwandte Themen