Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren wenn

Forumthread: Kopieren wenn

Kopieren wenn
16.03.2016 09:48:31
Alex
Hallo Zusammen,
so langsam komme ich zum Abschluss meines Projektes.
Mit die letzte Funktion die mir noch fehlt ist:
Ich würde gerne eine "Druckseite" aus einer Liste erstellen, im Prinzip ja ganz einfach mit folgenden Code, wenn alles kopiert werden soll:
Set rng = Worksheets("PM").UsedRange.Columns(1).Resize(, 2)
Set rng1 = Worksheets("Druckseite").Cells(Rows.Count, "A").End(xlUp)(2)
rng.Copy Destination:=rng1

Das ganze wird jetzt etwas kniffeliger ,da NUR kopiert werden soll, wenn der Eintrag durch eine Checkbox angeklickt/aktiviert ist:
 With ActiveSheet.CheckBoxes.Add(cell.Left, _
cell.Top, cell.Width, 1)
.LinkedCell = cell.Offset(, 1).Address(External:=True)
.OnAction = "CheckboxClick" 'damit klick auf Checkbox change event auf dem Worksheet auslö  _
_
st
.Interior.ColorIndex = xlNone
.Caption = ""
.Value = xlOff
End With

Das Problem: Die Liste kann gut über 1000/2000 Zeilen lang werden und jede einzelne kopieren macht sich doch in der Laufzeit bemerkbar.
Gibt es da einen Trick oder eine smarte Lösung?
Meine Idee/Umsetzung wäre jetzt:
1. Kopiere alles
2. Schleife im Worksheet"Druckseite", wenn nicht True, dann lösche Zeile
Effizienter Möglich?
Gruß ALex

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren wenn
16.03.2016 10:07:23
ChrisL
Hi Alex
Wie wäre es, wenn du erst den Filter verwendest, um danach die relevanten Zeilen zu kopieren.
cu
Chris

AW: Kopieren wenn
18.03.2016 09:43:10
Alex
Hallo Chris,
ich habe gerade paar varianten probiert.
Problem ist die extrem hohe Laufzeit.
probiert:
1.
- wenn Wahr, dann kopiere Zeile
2. Kopiere allesOriginal
- lösche Zeile, wenn True
Kopiere alles auf die Druckseite, Lösche alles auf der Quelle Seite, Füge allesOriginal wieder ein
Beides mir zu lange Laufzeiten....
Wer noch eine smarte Lösung?
Gruß+Danke!
Alex

Anzeige
AW: Kopieren wenn
18.03.2016 09:59:33
ChrisL
Hi Alex
So...
Sub Makro()
Dim WS1 As Worksheet, WS2 As Worksheet
Set WS1 = Worksheets("Tabelle1")
Set WS2 = Worksheets("Tabelle2")
Application.ScreenUpdating = True
With WS1.Columns("A:B")
.AutoFilter Field:=2, Criteria1:=True
.Copy WS2.Range("A1")
WS1.ShowAllData
End With
End Sub

cu
Chris

Anzeige
AW: Kopieren wenn
18.03.2016 12:58:11
Alex
Hey Chris,
leider macht der Code gar nichts bei mir, dauert zwar etwas, aber passiert (bis auf das Blatt angelegt) nichts.
Belegung der Spalten
A = kopieren
B = kopieren
C = Checkbox (nicht kopieren)
D = True/False aus der Checkbox
Jede Zeile kopieren (A+B), wenn Spalte D True steht
Private Sub CommandButton24_Click() ' Druckseite erstellen
Dim WS1 As Worksheet, WS2 As Worksheet
Sheets.Add(before:=Sheets("PM")).name = "Druckseite"
Set WS1 = Worksheets("PM")
Set WS2 = Worksheets("Druckseite")
Application.ScreenUpdating = True
With WS1.Columns("A:D")
.AutoFilter Field:=4, Criteria1:=True
.Copy WS2.Range("A1")
WS1.ShowAllData
End With
End Sub
Danke für deine Hilfe!
Gruß Alex

Anzeige
AW: Kopieren wenn
18.03.2016 13:36:58
ChrisL
Hi Alex
Bei mir gehts. Lade einfach eine Beispieldatei hoch.
cu
Chris
;

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