Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Erneutes kopieren in Mappe, in nächste leere Zeile | Herbers Excel-Forum


Betrifft: Erneutes kopieren in Mappe, in nächste leere Zeile von: Erik
Geschrieben am: 12.01.2012 13:24:49

Hallo zusammen,

ich würde gern meinen code erweitern aber bekomme es nicht hin. Ich würde gern beim erneuten drücken des buttons (kopiert zellen in eine andere Mappe), das excel meine zeile zuvor überprüft ob da schon was steht und wenn dort schon was eingefügt wurde, einfach in die nächste zeile schreibt/ kopiert. Hat dafür jmd was für mich ?

Danke im voraus.
Grüße Erik

Hier mein code:

Sub LadeButton_Click()

    Dim strOrdner As String, strdateiname As String
    Dim wbMappe As Workbook

    strOrdner = "Pfad/"
    strdateiname = "Datei.xlsx"

    On Error Resume Next 'Fehlerbehandlung
    Set wbMappe = Workbooks(strdateiname)
    If Not wbMappe Is Nothing Then
        wbMappe.Activate
        MsgBox "Mappe ist bereits geöffnet !"
    Else
        'Wenn Mappe noch nicht geöffnet ist
        If Dir(strOrdner & strdateiname) <> "" Then
            'Mappe aus o.g. Ordner öffnen :
            Set wbMappe = Workbooks.Open(strOrdner & strdateiname, UpdateLinks:=False)
        Else
            MsgBox "Folgende Datei existiert nicht : " & vbf & vbLf & _
                strOrdner & strdateiname, vbOKOnly + vbCritical, "Datei nicht gefunden !"
        End If
    End If
               
    If Not wbMappe Is Nothing Then
        ThisWorkbook.Sheets("Tabelle1").Range("A1:D1").Copy
        wbMappe.Sheets("Tabelle1").Range("B1:E1").PasteSpecial xlPasteValues
    End If

Set wbMappe = Nothing
    
End Sub

  

Betrifft: AW: Erneutes kopieren in Mappe, in nächste leere Zeile von: fcs
Geschrieben am: 12.01.2012 17:33:51

Hallo Erik,

folgende Ergänzung sollte funktionieren.

Sub LadeButton_Click()

    Dim strOrdner As String, strdateiname As String
    Dim lngZeile As Long
    Dim wbMappe As Workbook

    strOrdner = "Pfad/"
    strdateiname = "Datei.xlsx"

    On Error Resume Next 'Fehlerbehandlung
    Set wbMappe = Workbooks(strdateiname)
    If Not wbMappe Is Nothing Then
        wbMappe.Activate
        MsgBox "Mappe ist bereits geöffnet !"
    Else
        'Wenn Mappe noch nicht geöffnet ist
        If Dir(strOrdner & strdateiname) <> "" Then
            'Mappe aus o.g. Ordner öffnen :
            Set wbMappe = Workbooks.Open(strOrdner & strdateiname, UpdateLinks:=False)
        Else
            MsgBox "Folgende Datei existiert nicht : " & vbf & vbLf & _
                strOrdner & strdateiname, vbOKOnly + vbCritical, "Datei nicht gefunden !"
        End If
    End If
               
    If Not wbMappe Is Nothing Then
        ThisWorkbook.Sheets("Tabelle1").Range("A1:D1").Copy
        With wbMappe.Sheets("Tabelle1")
          lngZeile = Application.WorksheetFunction.Max( _
            .Cells(.Rows.Count, 2).End(xlUp).Row, _
            .Cells(.Rows.Count, 3).End(xlUp).Row, _
            .Cells(.Rows.Count, 4).End(xlUp).Row, _
            .Cells(.Rows.Count, 5).End(xlUp).Row) + 1
          .Cells(lngZeile, 2).PasteSpecial xlPasteValues
        End With
    End If
    Set wbMappe = Nothing
    
End Sub

Wenn eine der Spalten B bis E im Zielblatt in allen Zeilen einen Wert enthält, dann kannst etwas vereinfachen.z.B. für Spalte B:
          lngZeile =   .Cells(.Rows.Count, 2).End(xlUp).Row + 1

Gruß
Franz


Beiträge aus den Excel-Beispielen zum Thema "Erneutes kopieren in Mappe, in nächste leere Zeile"