Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Kopieren wenn Bedingung erfüllt ist.

Forumthread: VBA Kopieren wenn Bedingung erfüllt ist.

VBA Kopieren wenn Bedingung erfüllt ist.
17.12.2014 08:42:45
Kai
Hallo zusammen,
ich möchte in meiner Datenbank auf dem ersten Tabellenblatt eine Art "Eingabemaske" erstellen. Dort habe ich eine Zeile wo der Anwender per DropDown Menü bei verschiedenen Kriterien Werte eintragen kann. Um den VBA Code vielleicht ein bisschen zu vereinfachen, möchte ich, sobald der Anwender alle notwendigen Werte eingetragen hat, dem Eintrag per Wenn-Formel eine Zahl zuweisen. Abhängig von der Zahl soll der VBA Code nun die Werte aus dem "Eingabeformular" auf das entsprechende Tabellenblatt in die nächst freie Zeile kopieren.
Bisher habe ich auf jedem Tabellenblatt eine "Eingabezeile", die dann per VBA Code die Werte nach betätigen eines "Übernehmen" CommandButtons unten in die nächstfreie Zeile kopiert.
Sub Zeile_kopieren()
'Bereich kopieren
Sheets("Tabellenblatt1").Range("A4:Q4").Copy
'einfügen in erste freie Zeile in ausgabe
Sheets("Tabellenblatt1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
'Kopiermodus beenden
Application.CutCopyMode = False
End Sub

Ich hoffe ich war verständlich genug.
Vielen Dank für Eure Hilfe.
Gruß Kai

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Kopieren wenn Bedingung erfüllt ist.
17.12.2014 16:27:44
fcs
Hallo Kai,
hier ein Makro, das du noch anpassen musst.
Alternativ könntest du im Eingabeblatt auch den Namen des Ziel-Tabellenblattes in einer Zelle per Formel ermitteln und mit der Variante arbeiten.
Gruß
Franz
Sub Zeile_kopieren()
'Bereich kopieren
Dim strZiel As String
Select Case Worksheets("Eingabe").Range("C2").Value 'Zelle mit Zahlenwerten ggf. anpassen
'Vergleichswerte und Tabellennamen in den folgenden Zeilen anpassen!
Case 1 To 10
strZiel = "Tabelle A"
Case Is  "" Then
Worksheets("Eingabe").Range("A4:Q4").Copy
'einfügen in erste freie Zeile in ausgabe
With Worksheets(strZiel)
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End With
'Kopiermodus beenden
Application.CutCopyMode = False
Else
MsgBox "Bitte Eingabewerte prüfen, Daten konnten nicht kopiert werden!"
End If
End Sub
'Alternative - Name der Ziel-Tabelle wird in Zelle C2 per Formel ermittelt
Sub Zeile_kopieren_Variante()
'Bereich kopieren
Dim wksZiel As Worksheet
On Error Resume Next
Set wksZiel = Worksheets(Worksheets("Eingabe").Range("C2").Text) 'Zelle mit Name der  _
Zieltabelle ggf. anpassen
If Err.Number  0 Then
MsgBox "Bitte Eingabewerte prüfen, Daten konnten nicht kopiert werden!"
Err.Clear
Else
Worksheets("Eingabe").Range("A4:Q4").Copy
'einfügen in erste freie Zeile in ausgabe
With wksZiel
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End With
'Kopiermodus beenden
Application.CutCopyMode = False
End If
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA zum Kopieren von Zeilen, wenn eine Bedingung erfüllt ist


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und wechsle zum VBA-Editor, indem du ALT + F11 drückst.

  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf den VBA-Projektbaum und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden VBA-Code ein, um die Zeilen in ein anderes Tabellenblatt zu kopieren, wenn eine Bedingung erfüllt ist:

    Sub Zeile_kopieren()
       'Bereich kopieren
       Dim strZiel As String
       Select Case Worksheets("Eingabe").Range("C2").Value 'Zelle mit Zahlenwerten ggf. anpassen
           Case 1 To 10
               strZiel = "Tabelle A"
           Case Is = ""
               Worksheets("Eingabe").Range("A4:Q4").Copy
               'einfügen in erste freie Zeile in ausgabe
               With Worksheets(strZiel)
                   .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
               End With
               'Kopiermodus beenden
               Application.CutCopyMode = False
           Else
               MsgBox "Bitte Eingabewerte prüfen, Daten konnten nicht kopiert werden!"
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Excel-Dokument zurück.

  5. Füge einen Button hinzu, um den Code auszulösen, und weise ihm das Makro „Zeile_kopieren“ zu.


Häufige Fehler und Lösungen

  • Fehlermeldung: „Bitte Eingabewerte prüfen, Daten konnten nicht kopiert werden!“

    • Überprüfe die Zellreferenzen und stelle sicher, dass die Eingabewerte korrekt sind. Insbesondere der Wert in „C2“ auf dem „Eingabe“-Tabellenblatt muss im definierten Bereich liegen.
  • Die Zeile wird nicht in die nächstfreie Zeile kopiert.

    • Stelle sicher, dass die Ziel-Tabelle existiert und der Name in der Variable strZiel korrekt ist.

Alternative Methoden

  1. Verwende die Variante mit der Ziel-Tabelle als Formel:

    • Du kannst die Ziel-Tabelle in Zelle „C2“ per Formel ermitteln, um flexibler zu arbeiten. Der angepasste Code sieht so aus:
    Sub Zeile_kopieren_Variante()
       'Bereich kopieren
       Dim wksZiel As Worksheet
       On Error Resume Next
       Set wksZiel = Worksheets(Worksheets("Eingabe").Range("C2").Text) 'Zelle mit Name der Zieltabelle ggf. anpassen
       If Err.Number <> 0 Then
           MsgBox "Bitte Eingabewerte prüfen, Daten konnten nicht kopiert werden!"
           Err.Clear
       Else
           Worksheets("Eingabe").Range("A4:Q4").Copy
           'einfügen in erste freie Zeile in ausgabe
           With wksZiel
               .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
           End With
           'Kopiermodus beenden
           Application.CutCopyMode = False
       End If
    End Sub
  2. Verwende „VS Code“ für die Entwicklung:

    • Du kannst den VBA-Code auch in einem externen Editor wie Visual Studio Code (VS Code) schreiben und dann in Excel importieren.

Praktische Beispiele

  • Beispiel 1: Wenn der Anwender im Dropdown-Menü auf „1“ auswählt, werden die Werte in „Tabelle A“ kopiert. Stelle sicher, dass die Ziel-Tabelle existiert.

  • Beispiel 2: Du kannst auch mehrere Bedingungen hinzufügen, um verschiedene Tabellenblätter zu befüllen, je nach Auswahl im Dropdown-Menü.


Tipps für Profis

  • Verwende „Application.ScreenUpdating = False“, um das Flackern des Bildschirms während der Ausführung zu vermeiden:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Optimiere den Code durch das Zusammenfassen von Bedingungen, um die Lesbarkeit zu erhöhen und die Ausführung zu beschleunigen.


FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Excel-Versionen nutzen? Ja, der Code ist in den meisten modernen Excel-Versionen (ab Excel 2010) anwendbar.

2. Was mache ich, wenn mein Dropdown-Menü nicht funktioniert? Überprüfe die Datenquelle für das Dropdown-Menü und stelle sicher, dass die Zellverweise korrekt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige