Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Markierte Zeile per Makro kopieren

Forumthread: Markierte Zeile per Makro kopieren

Markierte Zeile per Makro kopieren
31.03.2020 13:30:13
René
Hallo zusammen,
ich bin ein absoluter Makroneuling und habe folgendes vor.
In einer Tabelle gibt es ein Reiter in dem „alle Daten“ erfasst werden und ein zweiten Reiter
der eine Art „Formblatt“ ist. Folgendes soll das Makro können:
1) Eine markierte Zeile im Reiter „Daten“ soll in den Reiter „Formblatt“ kopiert werden.
Also markierte Zeile aus „Daten“ Spalte „A“ nach Reiter „Formblatt“ Zeile 5 Spalte D.
2) Diese Aktion soll über einen Button funktionieren.
Ich wüsste (vielleicht) wie ich die kopiererei mit der Aufzeichnen Funktion hin bekomme aber fehlt mir dann noch die eigentliche Funktion über den Button.
Ich bitte um Hilfe viele Grüße René
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Markierte Zeile per Makro kopieren
31.03.2020 14:33:46
Werner
Hallo,
da würde ich das Doppelklick-Event des entsprechenden Blattes verwenden.
Der Code gehört ins Codemodul des Tabellenblattes "Daten"
Rechtsklick auf den Tabellenblattreiter - Code anzeigen - Code rechts ins Codefenster kopieren.
Bei Doppelklick auf einen Datensatz im Blatt "Daten" in Spalte A wird die komplette Zeile ins Blatt "Formblatt" nach D5 kopiert.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
If Target  "" Then
Cancel = True
Range(Cells(Target.Row, Target.Column), Cells(Target.Row, _
Cells(Target.Row, Columns.Count).End(xlToLeft).Column)).Copy _
Worksheets("Formblatt").Range("D5")
End If
End If
End Sub
Gruß Werner
Anzeige
AW: Markierte Zeile per Makro kopieren
31.03.2020 18:41:30
René
Hallo Werner, danke für die schnelle Antwort. Coole Sache mit dem Doppelklick. Ich möchte gern meine Frage präzisieren ... ich hatte mich nicht richtig ausgedrückt.
Ich habe eine Tabelle mit zwei Reiter „Daten“ und „Formblatt“. Aus dem Reiter „Daten“ will ich nun eine oder mehrere Zeilen markieren und nach Formblatt kopieren. ABER, nicht alle Infos aus „Daten“ sollen kopiert werden. Nehmen wir an es sind die Spalten A, C, F, G, H und S. Diese sollen aus der markierten Zeile/Zeilen nach Formblatt kopiert werden . Geht sowas?
Beste Grüße René
Anzeige
AW: Markierte Zeile per Makro kopieren
05.04.2020 00:59:30
Werner
Hallo,
so z.B.:
Option Explicit
Public Sub aaa()
Dim raBereich As Range, raZelle As Range, i As Long
Application.ScreenUpdating = False
For i = 1 To 19
Select Case i
Case 1, 3, 6 To 8, 19
For Each raZelle In Selection.Rows
If raBereich Is Nothing Then
Set raBereich = Cells(raZelle.Row, i)
Else
Set raBereich = Union(raBereich, Cells(raZelle.Row, i))
End If
Next raZelle
Case Else
End Select
Next i
raBereich.Copy Worksheets("Formblatt").Range("A1")
Set raBereich = Nothing
End Sub
Gruß Werner
Anzeige
;
Anzeige

Infobox / Tutorial

Markierte Zeile per Makro kopieren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Deine Excel-Datei mit den Reitern "Daten" und "Formblatt".

  2. Rechtsklick auf den Reiter "Daten" und wähle "Code anzeigen".

  3. Füge den folgenden Code in das Codefenster ein, um das Doppelklick-Event zu verwenden:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Target.Column = 1 Then
           If Target <> "" Then
               Cancel = True
               Range(Cells(Target.Row, Target.Column), Cells(Target.Row, _
               Cells(Target.Row, Columns.Count).End(xlToLeft).Column)).Copy _
               Worksheets("Formblatt").Range("D5")
           End If
       End If
    End Sub
  4. Speichere Deine Änderungen und teste das Makro, indem Du einen Doppelklick auf eine Zelle in Spalte A machst.

  5. Um mehrere Zeilen zu kopieren, verwende den folgenden Code anstelle des Doppelklicks:

    Option Explicit
    Public Sub KopiereMehrereZeilen()
       Dim raBereich As Range, raZelle As Range, i As Long
       Application.ScreenUpdating = False
       For i = 1 To 19
           Select Case i
               Case 1, 3, 6 To 8, 19
                   For Each raZelle In Selection.Rows
                       If raBereich Is Nothing Then
                           Set raBereich = Cells(raZelle.Row, i)
                       Else
                           Set raBereich = Union(raBereich, Cells(raZelle.Row, i))
                       End If
                   Next raZelle
               Case Else
           End Select
       Next i
       raBereich.Copy Worksheets("Formblatt").Range("A1")
       Set raBereich = Nothing
    End Sub
  6. Verknüpfe das Makro mit einem Button auf dem "Formblatt":

    • Gehe zu "Entwicklertools" > "Einfügen" > wähle "Button".
    • Zeichne den Button auf das Formular und wähle das Makro "KopiereMehrereZeilen".

Häufige Fehler und Lösungen

  • Fehler: Makro wird nicht ausgeführt.

    • Lösung: Überprüfe, ob die Makros in Deinen Excel-Einstellungen aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trust Center" und aktiviere die Makros.
  • Fehler: Keine Zeilen werden kopiert.

    • Lösung: Stelle sicher, dass Du die richtigen Spalten in Deinem Code ausgewählt hast. Ändere die Select Case-Anweisung entsprechend.

Alternative Methoden

Eine Möglichkeit, die gleiche Funktionalität zu erreichen, ist die Verwendung von Excel-Formeln oder Power Query, um Daten zu extrahieren und auf das "Formblatt" zu bringen. Dies ist jedoch weniger flexibel als die Verwendung von Makros.


Praktische Beispiele

Angenommen, Du möchtest die Spalten A, C, F, G, H und S kopieren. Stelle sicher, dass Du die Select Case-Anweisung in Deinem VBA-Code entsprechend anpasst, um diese Spalten zu berücksichtigen.

Select Case i
    Case 1, 3, 6, 7, 8, 19 ' Hier die relevanten Spalten auswählen

Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen in VBA, um sicherzustellen, dass Dein Makro auch bei unerwartetem Verhalten stabil bleibt.
  • Experimentiere mit der Aufzeichnungsfunktion in Excel, um den VBA-Code für komplexere Aufgaben zu verstehen und zu lernen.

FAQ: Häufige Fragen

1. Kann ich das Makro so anpassen, dass es in eine andere Zeile im "Formblatt" kopiert?
Ja, ändere einfach die Zeile in der Range-Anweisung, z.B. Worksheets("Formblatt").Range("D10").

2. Ist es möglich, den Code so zu erweitern, dass eine Bestätigung vor dem Kopieren erfolgt?
Ja, das kannst Du mit einer MsgBox tun, die den Benutzer fragt, ob er fortfahren möchte.

3. Welche Excel-Version benötige ich für diese Makros?
Diese Makros sind in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2013, 2016, 2019 und Microsoft 365.

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