iceage
Goto Top

Excel VBA - Werte aus anderer Excelliste kopieren

Hallo und Guten Morgen,

ich stehe mal wieder auf dem Schlau mich einem Excel-Makro unter Excel2019 (Win11). Das folgende Makro kopiert 2 Werte aus einer Excel-Liste in eine andere Excel-Datei. Auf der Quell-Liste wähle ich eine Zelle in der Zeile (z.B. Zeile 22), starte dann das Makro mit der hinterlegten Tastenkombination und dann sollten die beiden Werte aus Zelle C22+G22 in die andere Excel-Liste in die ersten freien Zeilen ab Zeile7 in Zelle C7+D7 kopiert werdem. Danach gehe ich in die Zeile 24 und er soll dann die Werte aus C24+G24 in die andere Excel-Liste in C8+D8 kopieren. Mit dem folgenden Makro wählt er bereits die korrekten Werte aus, kopiert sie aber in die Zelle C23+D23. Ich such seit ner Stunde den Fehler und komm nicht drauf:

Sub Artikel_einfügen()
'  
' Tastenkombination: Strg+b  
'  
    ' Variablen  
    Dim wsSource As Worksheet, wsDest As Worksheet, selRow As Long, intNextFree As Long, wb As Workbook, strPath As String
    ' Pfad zur Bestellvorlage  
    strPath = "F:\Kalkulator\Vorlage.xltm"  
    ' aktuelle Zeile ermitteln  
    selRow = Selection.Row
    ' aktuelles Sheet/Quelle/Preisliste ermitteln  
    Set wsSource = ActiveSheet
    ' Prüfen ob das 2. Sheet/Bestellvorlage geöffnet ist  
    For Each wb In Workbooks
        If wb.FullName = strPath Then
            Set wsDest = wb.Sheets(1)
            Exit For
        End If
    Next
    ' Bestellvorlage öffnen, falls sie noch geschlossen ist  
    If wsDest Is Nothing Then
        Set wsDest = Workbooks.Open(strPath).Sheets(1)
    End If
    ' Suche die erste freie Zelle in Spalte C ab Zeile 7  
    intNextFree = wsDest.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Row  
    ' Werte kopieren  
    wsDest.Cells(intNextFree, "C").Value = wsSource.Cells(selRow, "C").Value  
    wsDest.Cells(intNextFree, "D").Value = wsSource.Cells(selRow, "G").Value  
End Sub

Ich denke, hier in dieser Zeile ist noch der Wurm drin:
    intNextFree = wsDest.Cells(Rows.Count, "C").End(xlUp).Offset(1, 0).Row  

Kann hier jemand kurz mal drüber schauen und mich erleuchten? face-smile

Vielen Dank

I.

EDIT: Ah, noch ein Hinweis. In der Ziel-Datei steht in der Zelle C22 eine Bezeichnung. Daher springt er bei dem Übertragen der Werte soweit runter. Das Makro müsste also nach der ersten freien Zelle in Spalte C zw. Zeile 7 und 21 suchen.

Content-ID: 668426

Url: https://administrator.de/contentid/668426

Ausgedruckt am: 21.11.2024 um 18:11 Uhr

150704
Lösung 150704 27.09.2024 aktualisiert um 15:07:12 Uhr
Goto Top
intNextFree = wsDest.Cells(21, "C").End(xlUp).Offset(1, 0).Row  
RTFM
IceAge
IceAge 27.09.2024 um 11:10:08 Uhr
Goto Top
Perfekt, das klappt. Wieder mal, vielen lieben Dank für deine Hilfe.

Grüße I.