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

Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen

Forumthread: Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen

Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen
22.10.2025 21:07:50
Martin
Hallo zusammen,

eine Information vorweg, ich bin absolut kein Programmierer und habe, bis auf eure Hilfe, alles mit der Google KI versucht zu lösen indem ich bestimmte Fragen in VBA-Code habe umwandeln lassen und versucht diesen anzupassen . Mein „Bastel-Ergebnis“ habe ich jetzt mit hochgeladen und vorab versucht sie bestmöglich zu anonymisieren. Daraus ist zu erkennen, dass ich leider an meine Grenzen gekommen bin eine funktionierende Excel-Anwendung zu erstellen. Also bitte nicht wurden, wenn etwas so gar nicht „passt“ oder so mancher Code oder manches Modul nicht dort ist, wo es sein sollte. Auf jeden Fall habe ich es versucht, es funktioniert auch einiges und ich lerne gerne dazu 😊

Anstatt Steuerelemente in das jeweilige A.-Blatt einzufügen, habe ich mich dafür entschieden eine neue Menüleiste zu erstellen, die auf die erstellten Makros zugreift und über die man sie ausführen kann. Wenn man meine Datei von einem anderen PC aus öffnet, wird diese Menüleiste jedoch nicht angezeigt. Meine Lösung ist, sie zu exportieren und dann wieder zu importieren. Ich denke, das wird hier wahrscheinlich dann auch so sein, dass ihr die zusätzliche Menüleiste nicht eingeblendet bekommt. Deshalb habe ich die Importdatei „Excel-Anpassungen.exportedUI“ mit hochgeladen.

Nun zu meinen Problemen. Wenn man meine Excel Arbeitsmappe öffnet, dann dauerst es ein paar Sekunden bis die erste Meldung erscheint und der Fokus auf die erste Zelle mit gelbem Hintergrund gesetzt wird. Woran liegt das und ist es möglich, diese Zeit zu verkürzen?

Das Kopieren von Daten aus dem Arbeitsblatt [2025] in das Arbeitsblatt [Meldebogen] funktioniert zwar, jedoch nicht so wie es sollte. Es sollte, nur wenn in der Spalte X im Arbeitsblatt [2025] KEIN Datum enthalten ist, die Daten (Zahlstelle,Name1,GK,Kosten,Reisekosten) aus dem Arbeitsblatt [2025] in das Arbeitsblatt [Meldebogen] kopiert werden. Im Arbeitsblatt Meldebogen darf das Einfügen jedoch erst ab Zeile 17 (Zelle B17) beginnen, da der Zellbereich oberhalb der Zeile 17 einem vorgegebenen Layout für den Empfänger entsprechen muss. Auch sollten im [Meldebogen] die Anzahl der Zeilen, den Zeilen im Arbeitsblatt [2025] angepasst werden. Wenn z. B. nur 20 Zeilen kopiert werden, dann sollten im [Meldebogen] auch nur 20 ausgefüllte Zeilen erscheinen (oder mehr). Im Moment werden jedoch auch die leeren Zeilen aus dem Arbeitsblatt [2025] mit in das Arbeitsblatt [Meldebogen] kopiert. Ich weiß nicht wie ich das ändern kann?

Bei eurer ersten Hilfe enthielten die einzelnen Tabellen (Master,2023,2024,2025,2026) noch drei weitere Spalten. "Ende", "Datum Feststellung" und "Datum Aktualisierung". Diese wurden nach einer späteren Überarbeitung überflüssig. Wenn ich jedoch diese drei Spalten lösche, bekomme ich eine Fehlermeldung beim ausführen des VBA Codes. Ich weiß aber nicht in welchem Code diese drei nicht mehr benötigten Spalten berücksichtigt werden und würde diese aber gerne löschen?

Aufgrund meiner wirklich geringen Programmierkenntnisse bzw. fehlender Vorbereitung habe ich es leider erst im Nachhinein bemerkt, das alles was ich mit Hilfe der Google KI versuche mit VBA umzusetzen, dies nur für das Arbeitsblatt [2025] gilt. Jedoch sollte die Funktionalität aus dem Arbeitsblatt [2025] in allen Arbeitsblättern meiner Arbeitsmappe vorhanden sein. Mindestens aber in dem Arbeitsblatt [2026] und in dem Arbeitsblatt [Master]. Bedeutet dies, dass ich jedweden VBA Code in jedes einzelne Arbeitsblatt übernehmen muss oder kann man ohne großen Aufwand die Codes so anpassen, dass er für alle Arbeitsblätter gelten?

Ich habe leider auch ein paar Probleme mit dem befüllen meiner ausfüllbaten PDF-Vorlagen und der Übergabe dieser PDF dann als Anhang an eine Mail. Doch leider kann ich meine Vorlagen hier nicht, ohne sie zu komplett zu anonymisieren einstellen. Gibt es hierzu einen Vorschlag?

https://www.herber.de/bbs/user/179221.xlsm

Leider lässt sich die Import Datei für die Menüleiste nicht hochladen. Gibt es auch hierzu einen Vorschlag von euch?

Ich bedanke mich jetzt schon mal vorab für jede Hilfe von euch.

Gruß

Martin
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen
23.10.2025 02:07:49
ralf_b
https://www.herber.de/bbs/user/179223.xlsm
ich hab dir mal etwas in deiner Datei herumgepfuscht.
bei der Menge an Anforderungen solltest du dich nicht beschweren wenn sich da kaum einer rantraut.

Warum dauert das Laden bei dir so lange? na weil du in den Eventmakros so ne Menge Zeug abarbeiten läßt.
reduziere die zu bearbeitenden Bereiche auf da das Mindestmaß. keine ganzen Spalten mit 1 mio Zellen verarbeiten.
du verwendest intelligente Tabellen. Dann nutze deren Objekte. Listobjects und Listrow, Listcolumn. Ein Beispiel dazu im dem Code für die Meldungsliste.

jedes mal wenn eine Zelle geändert wird, springt dein Eventmakro worksheet_change an. Was passiert wohl wenn du im Eventmakro eine Zelle änderst?
Das Einfärben von Zellen fürs aktuelle Datum erledige mit einer bedingten Formatierung, Siehe Masterblatt.

Das worksheetchange kann man auch ins Workbook_Sheetchange() verlagern. Dann reicht ein Makro für alle Blätter. Bachte das du die Blattauswahl dann einschränken solltest. Im Beispiel läuft es nur durch wenn Blätter deren Name Länge = 4 ist. Sicherlich ist das nicht der Weisheit letzter Schluß, denn du willst ja alte Blätter nicht jedesmal neu bearbeiten nur weil du mal da irgendwo reinklickst.

Um Makros auf verschiedene Blätter anzuwenden gibt es einige Möglichkeiten. Du kannst dem Makro einen Parameter mit dem Blattnamen übergeben oder eine globale Variable definieren, die beim Workbook_open() gesetzt wird. Oder oder oder.

ich erhalte keine Fehlermeldung wenn ich die drei Spalten am Ende der Jahres-Tabellen lösche.


Anzeige
AW: Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen
23.10.2025 12:41:46
Martin
Hallo Ralf,

zuerst einmal danke für deinen Hinweis bzgl. der Menge an Anforderungen. Du hast Recht, ist mir aber erst nach deinem Hinweis bewusst geworden.

Und nach herumgepfuscht sieht das für mich nicht aus, eher nach professioneller und notwendiger Inventur meiner bastelei.

Deinen Vorschlag mit der bedingten Formatierung habe ich auf alle Arbeitsblätter übertragen, funktioniert besser und schneller als meine Lösung.

Das jetzt auch nur die Daten in den Meldebogen übernommen werden, die noch nicht abgerechnet wurden, klappt tadellos auch. Ich hatte jedoch vergessen zu erwähnen, das bei jeder Aktualisierung des Meldebogens alle vorherigen Einträge überschrieben werden sollen, oder die Zeilen vorab gelöscht werden, sodass immer in der ersten Zeile (17) des Meldebogen begonnen wird. Ich hatte das selber schon versucht, jedoch mit dem Ergebnis das dann alle Zeilen gelöscht wurden. Kannst du mir hierzu bitte noch einen Vorschlag machen?

Das mit der Datumsberechnung nach der deiner Änderung klappt leider nicht mehr. Wenn ich nun bei Erstkontakt ein beliebiges Datum eingebe, zeigt es in der 1.Erinnerung immer das Datum 30.01.1900 an und die 2.Erinnerung bleibt leer. Gebe ich in der 1.Erinnerung ein beliebiges Datum ein, dann zeigt es mir immer den 15.01.1900 in der 2.Erinnerung an. Bisher war es so, dass wenn man bei Erstkontakt ein beliebiges Datum eingab, dann wurde für die 1.Erinnerung (+30) und die 2.Erinnerung (+15) das jeweilige Datum automatisch eingetragen. Woran liegt das?

Zu der Fehlermeldung nach dem löschen der Spalten. Die bekomme ich nur, wenn ich eine der Seriendruckprozeduren ausführe. Ich denke das liegt dann an meinen Word Serienbriefen, oder?

Ich bedanke mich für deine Unterstützung und Vorschläge, ich werde sie in Zukunft beachten und versuchen sie dem entsprechend umzusetzen.

Gruß

Martin
Anzeige
AW: Bedingtes kopieren in andere A.-Blätter u. VBA Anpassungen
25.10.2025 14:21:50
ralf_b
Die Datumberechnung hatte ich gar nicht nochmal geprüft. Da dort Variablen weggefallen sind, ändere den Code wie folgt.
TargetCell.Offset(0, 1).Value = TargetCell + 30
Für die 15'er Zeile entsprechend.

Da du intelligente Tabellen ( in VBA Listobjects) verwendest, kannst du die Meldungsliste recht einfach leer machen ohne sie zu löschen.
https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables
hier kannst du dich mal einlesen. Entweder du löscht die Listrows oder die Databodyrange. Oder was auch immer für dich besser funktioniert. Es gibt meist für alle Anforderungen mehrere Wege.

Da VBA im Grunde keine Augen hat und unsichtbar abläuft, solltest du immer sicher gehen das dein Code auch auf die passende Struktur trifft. Z.b. Prüfen ob die intelligente Tabelle existiert oder ob überhaupt ein Tabellenbody da ist bevor du eine Löschung darauf abfeuerst. Codes, die du hier bekommst sind meist ohne diese Fehlerbehandlungsroutinen. Es sei denn du fragst explizit danach.
Anzeige

Forumthreads zu verwandten Themen