Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1528to1532
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren mit Sammelfunktion und später einfügen

Kopieren mit Sammelfunktion und später einfügen
19.12.2016 07:36:56
Werner
Hallo Forum,
ich habe mehrere Tabellenblätter und möchte ausgewählte Zeilen aus einem Blatt sammeln und dann in ein anderes Tabellenblatt einfügen.
Ich dachte dabei an die Funktion "Workbook_SheetBeforeDoubleClick". Mit jedem Klick kann ich eine Zeile auswählen, egal auf welche Spalte geklickt wird. Der Inhalt der Zeile (mit mehreren Spalten) soll in einen Zwischenspeicher. Manchmal sind auch noch Folgezeilen zu kopieren; das ist mit Logik zu realisieren. Wenn alle gewünschten Zeilen ausgewählt und kopiert wurden, wechsle ich in das andere Blatt und möchte dort die zuvor gesammelten Zeilen einfügen.
Soweit die Theorie. Aber wie löse ich so etwas? Wer hat brauchbare Ideen?
Danke für jeden guten Vorschlag.
Werner

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren mit Sammelfunktion ...
19.12.2016 11:07:42
guenni
Hier wäre eine Idee:

Sub MarkierteZeilenKopieren()
Dim Zeil_Liste(65000) As Boolean ' muss mehr Elemente haben als die größte mögliche  _
Zeilennummer
Dim zellchen As Range
For Each zellchen In Selection.Cells
Zeil_Liste(zellchen.Row) = True
Next
For i = 1 To 65000
If Zeil_Liste(i) Then
j = j + 1
Range("A" & i).EntireRow.Copy (Worksheets("Zielblatt").Range("A" & j))
End If
Next
Worksheets("Zielblatt").aktivate
End Sub

Gruß,
Günther
AW: Kopieren mit Sammelfunktion und später einfügen
19.12.2016 11:51:59
Werner
Hallo Namensvetter,
von mir auch eine Version mit Doppelklick (in Spalte A, Blatt 2).
Derzeit dann so, dass die angeklickte Zeile von Spalte A bis Spalte E fortlaufend in Blatt 2 kopiert werden.
Warum du die Daten erst sammeln willst ist mir unklar.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim loLetzte As Long
If Target.Column  1 Then Exit Sub
loLetzte = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row
If Sheets("Tabelle2").Cells(loLetzte, 1) = "" Then
loLetzte = 1
Else
loLetzte = loLetzte + 1
End If
Cancel = True
Target.Resize(, 5).Copy Sheets("Tabelle2").Cells(loLetzte, 1)
End Sub
Gruß Werner
Anzeige
AW: Kopieren mit Sammelfunktion und später einfügen
19.12.2016 16:18:18
Werner
Hallo guenni, hallo Namesvetter,
vielen Dank für Eure Vorschläge.
Warum ich die Daten erst sammeln und später kopieren möchte: erst nachdem ich die Sammlung beendet habe, lege ich fest, in welches Blatt die Daten kopiert werden sollen. Dafür sind dann allerdings auch 2 Schritte notwendig. Während einer Makro-Ausführung das aktuelle Blatt zu verlassen und in das (noch nicht festgelegte) Ziel-Blatt zu wechseln, dürfte sehr schwierig sein.
Ich habe mich zu folgender Lösung entschlossen:
1. Mit einem Workbook_SheetBeforeDoubleClick-Event markiere ich die angeklickte Zeile mit gelber Hintergrundfarbe, bzw. lösche diese, falls vorhanden (flip / flop). Gleichzeitig wird in einer globalen Variablen die Index-Nummer des Blattes, in dem die Markierung vorgenommen wurde, hinterlegt.
2. Nach einem Klick ist es auch möglich, "von Hand" einen zusammenhängenden Bereich von Zeilen zu markieren. (nur die Klick-Routine hinterlegt die Index-Nummer)
3. Wenn alle gewünschten Zeilen markiert sind, wechsele ich in das Blatt, in welches die Daten am Ende eingefügt werden sollen.
4. Alle Zeilen im "vom-Blatt" werden auf Hintergrundfarbe geprüft. Wurde eine entsprechende Zeile gefunden, wird diese kopiert. Allerdings habe ich mit dem Syntax des nachfolgenden Befehls Probleme:
Worksheets(MyCopyBlatt).Range("A" & Loop1).entire.Copy (ActiveSheet.Range("A" & ToLastRow + 1))
Ich bekomme: Laufzeitfehler 438. Die Index-Nummer des Von-Blattes ist in MyCopyBlatt hinterlegt.
Wie wäre der richtige Syntax?
Gruß
Werner
Anzeige
AW: Kopieren mit Sammelfunktion und später einfügen
19.12.2016 20:38:17
Werner
Hallo Werner,
entweder so:
Worksheets(MyCopyBlatt).Range("A" & Loop1).EntireRow.Copy (ActiveSheet.Range("A" & ToLastRow + 1))
oder kürzer:
Worksheets(MyCopyBlatt).Rows(Loop1).Copy (ActiveSheet.Rows(ToLastRow + 1)
Gruß Werner
AW: Kopieren mit Sammelfunktion und später einfügen
19.12.2016 21:00:26
guenni
... entire?
hier fehlt was
AW: Kopieren mit Sammelfunktion und später einfügen
19.12.2016 21:28:57
Werner
Hallo Namensvetter,
Deine Kurz-Lösung hat funktioniert (nachdem ich rechts noch eine ")" angefügt habe.
Mein Problem ist damit gelöst.
Gruß
Werner
AW: Gerne u. Danke für die Rückmeldung.
19.12.2016 21:34:18
Werner
Hallo,
die ist mir wohl beim Kopieren abhanden gekommen. Ich schick dir mal noch ein paar hinterher. )))
Gruß Werner
Anzeige

352 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige