Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
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

Var. Bereich in neues Blatt kopieren

Var. Bereich in neues Blatt kopieren
16.04.2020 16:42:53
ExcelRocker
Hallo zusammen,
da VBA absolut neu für mich ist und ich keine adäquate Lösung finden konnte, hoffe ich hier auf Hilfe zu stoßen.
Ich habe ein vereinfachtes Muster meiner Datei hochgeladen. Ich habe bereits ein Makro erstellt, welches das Blatt Anhang erstellt.
Zu meinem Problem:
Ich möchte das der gefüllte Bereich von A6 bis H47 des Blattes "Erstellung" in das neue Blatt "Anhang" kopiert wird. Dabei sollen die Spalten C bis H jedoch nur kopiert werden, wenn eine Produkt-Nr. in Zeile 6 der entsprechenden Spalte eingetragen ist.
Die Spalten die eine Produkt-Nr. enthalten (in der hochgeladenen Datei C-F) sollen bis zu der Zeile kopiert werden, in der etwas steht. Maximal bis Spalte 47. Im Beispiel also Spalte C bis Zeile 22, Spalte D bis Zeile 22, Spalte E bis 32 und Spalte F bis Zeile 27.
Spalte G und H enthalten im Beispiel keine Produkt-Nr. und sollen nicht in das neue Blatt kopiert werden.
Spalte A und B sollen bis zu der Zeile kopiert werden, welches die "tiefste" bei den Spalten C bis H ist. Also im Beispiel Zeile 32. Hier auch maximal bis zur Zeile 47.
Im Blatt "Anhang" kann die neue Tabelle direkt in Zelle A1 starten und eingefügt werden (Die Zelle A6 im Blatt "Erstellung" wird also zur Zelle A1 im Blatt "Anhang".
Meine Beispieldatei:
https://www.herber.de/bbs/user/136787.xlsm
Wenn ihr mir einen Code zur Verfügung stellen könnt, wäre ich euch sehr dankbar!
MfG
ExcelRocker

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Var. Bereich in neues Blatt kopieren
17.04.2020 09:37:13
fcs
Hallo ExcelRocker,
hier mein Lösungsvorschlag.
LG
Franz
Sub Anhang()
' Daten aus "Erstellung" in neues Blatt übertragen
Dim ws As Worksheet, wsErst As Worksheet
Dim zei As Long, zei_1 As Long, Zei_L
Dim spa As Long, spa_L As Long, spa_A As Long
Dim bolBlock As Boolean
'Blatt mit Daten einer Variablen zuweisen
Set wsErst = Worksheets("Erstellung")
' neues Blatt "Anhang" in Excel erstellen
Set ws = ThisWorkbook.Worksheets.Add
ws.Name = "Anhang"
'gefüllten Bereich in neues Blatt kopieren
Application.ScreenUpdating = False
With wsErst
zei_1 = 6 'Zeile mit den Spaltentiteln setzen
'letzte ausgefüllte Spalte in Zeile 6 ermitteln
spa_L = .Cells(zei_1, .Columns.Count).End(xlToLeft).Column
'Startwert für letzte Zeile setzen
Zei_L = zei_1
'letzte Zeile mit Wert Spalte C bis zur letzten Spalte ermitteln
bolBlock = True
For spa = 3 To spa_L
If .Cells(zei_1, spa).Text = "" Then
bolBlock = False
Else
zei = .Cells(.Rows.Count, spa).End(xlUp).Row
If zei > Zei_L Then Zei_L = zei
End If
Next
'1. Einfügespalte in "Anhang" setzen
spa_A = 1
'Spalten A +B kopieren
.Range(.Cells(zei_1, 1), .Cells(Zei_L, 2)).Copy ws.Cells(1, spa_A)
spa_A = 2
'Spalten mit Produkt-Nrn kopieren
If bolBlock = True Then
'Spalten als Block kopieren - es gibt keine Lücke bei den Produkt-Nrn
spa_A = spa_A + 1
.Range(.Cells(zei_1, 3), .Cells(Zei_L, spa_L)).Copy ws.Cells(1, spa_A)
Else
'spaltenweise kopieren - es gibt Lücken bei den Produkt-Nrn
For spa = 3 To spa_L
If .Cells(zei_1, spa).Text  "" Then
spa_A = spa_A + 1
.Range(.Cells(zei_1, spa), .Cells(Zei_L, spa)).Copy ws.Cells(1, spa_A)
End If
Next
End If
End With
' mit dem ausgefüllten Blatt "Anhang" was machen
With ws
.Columns.AutoFit
Exit Sub ' Notausgang während Testphase
' Ecxel Blatt "Anhang" wieder löschen
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Var. Bereich in neues Blatt kopieren
17.04.2020 13:49:59
ExcelRocker
Hallo Franz,
vielen Dank für deine Hilfe! Ich habe es direkt getestet.
Das Kopieren nur der Spalten, die eine Produkt-Nr. enthalten, funktioniert super. Leider stoppt das kopieren nicht nach dem letzten Eintrag in den Spalten (Im Beispiel Zeile 32). Und spätestens in Zeile 47. Kann man das noch einbinden? Ich habe es mit Leerzeilen probiert um den Vorgang spätestens in Zeile 47 zu stoppen, die werden aber einfach mit kopiert.
Der Inhalt der Tabelle im Bereich C19:H47 wird leider auch nur im Bereich C19:H20 kopiert. Andere gefüllte Zellen, wie z.B. C21 oder E30 werden leer im Blatt Anhang wiedergegeben.
Hast du oder jemand anderes dafür noch eine Idee?
Vielen Dank schon einmal für die Unterstützung!
VG
ExcelRocker
Anzeige
AW: Var. Bereich in neues Blatt kopieren
17.04.2020 13:56:52
ExcelRocker
Was ich auch noch nicht einbinden konnte ist, dass Spalte A und B auch nicht ganz kopiert werden sollen, sondern nur bis zur letzten gefüllten Zeile im Bereich C19:H47.
AW: Var. Bereich in neues Blatt kopieren
18.04.2020 11:23:05
fcs
Hallo ExcelRocker,
scheinbar war deine Beispiel-Datei nicht ganz representativ für deine tatsächlichen Daten.
a) unterhalb von Zeile 47 befinden sich auch noch Zellen mit Daten/Formeln.
b) Im Bereich C7:H47 gibt es scheinbar Zellen mit Formeln.
Ich hab das Makro jetzt umgebaut.
1. Um die letzte Zeile mit angezeigtem Inhalt &lt&gt "" zu ermitteln wird jetzt ab Zeile 47 Richtung 6 jede Zelle geprüft.
2. Beim Kopieren nach Anhang werden nur Formate und Werte kopiert.
Hier deine Datei mit Makro und Ergebnissen von verschiedenen Tests.
https://www.herber.de/bbs/user/136830.xlsm
LG
Franz
Anzeige
AW: Var. Bereich in neues Blatt kopieren
19.04.2020 14:03:13
ExcelRocker
Hallo Franz,
ich kann dir gar nicht genug danken, es funktioniert super!
Ich habe in der Zwischenzeit probiert eine E-Mail und einen Anhang zu generieren. Leider kriege ich meinen Code nicht mit deinem "verbunden".
Alles das was in dem neuen Blatt Anhang erscheint soll in der E-Mail gezeigt werden und zusätzlich als Anhang (Excel-Datei) der E-Mail angehängt werden. Das betrifft ja maximal den Bereich A:H.
Siehst du meinen Fehler? Es scheint als wäre der Teil "Dim ws as worksheet" zum Beispiel doppelt. Ich bin noch nicht dahinter gekommen, wie ich das löse. Gleiches gilt für den Bereich "Set rng = ws.Range(A1:H).SpecialCells(xlCellTypeVisible)". Der wird mir auch als falsch angezeigt.
Für weitere Hilfe wäre ich sehr dankbar!
Ich habe die Datei mit dem Makro Anhang_Mail hochgeladen.
https://www.herber.de/bbs/user/136858.xlsm
VG
ExcelRocker
Anzeige
AW: Var. Bereich in neues Blatt kopieren
21.04.2020 16:58:51
fcs
Hallo ExcelRocker,
ich hab das Makro angepasst.
Damit sich die Anzahl der Fehler im Ablauf minimiert hab ich am Anfang des Makros etliche Prüfungen bzgl. Verzeichnisse und Dateinamen eingebaut plus eine allgemeine Fehlerbehandlung.
In der Variante wird das Blatt "Anhang" direkt in einer neuen Arbeitsmappe erstellt. Das vereinfacht das Makro etwas.
https://www.herber.de/bbs/user/136942.xlsm
Das Verzeichnis, in dem der erstellte Anhang und die MAil gespeichert werden sollen musst du ggf. anpassen.
LG
Franz
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige