Excel VBA - Wiederverwendung von Codezeilen leichter möglich?

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.891
Hallo ihr,

ich wollte einmal fragen, ob es für mich noch eine bessere Möglichkeit gibt mit Excel VBA zu arbeiten.
Aber dazu müsstet ihr erst einmal wissen, was genau ich meine :D

Da ich schon einiges in Excel VBA und Word VBA Programmiert habe und häufig Programmzeilen wiederverwende, habe ich mir eine kleine Bibliothek geschrieben.
Diese Bibliothek ist ein VBA Modul, welches ich in jedes meiner neuen Programme importiere um daraus entsprechend notwendige Codezeilen zu kopieren.

Meine Frage wäre, ob es da nicht eine einfachere Möglichkeit gibt? Also das ich während der Programmierung zum Beispiel letzteZeile eingeben und mit Tab oder einer anderen Taste/ Tastenkombination wird aus einer Bibliothek die entsprechende Codezeile(n) in mein Programm eingefügt.
 
Warum machst du nicht einfach (sofern möglich) die jeweilige Codezeile als eigene Subprozedur (Funktion)? Wenn du das Modul eh immer importiert, sollte das doch kein Problem sein.

Oder dich halt z. B. In Autoit etwas einlesen und da Hotkeys mit erstellen, mit denen dann der Code einfach eingefügt wird, bei einem bestimmten Tastendruck oder Tastenkombination.
 
Als Subprozedur geht es nicht. Es sind Codezeilen, die als Vorlage genommen werden. Manchmal sind es komplette Module zum ausführen von Code (Öffnen und Standardbearbeitungen von Daten wäre hier ein Beispiel). Die kompletten Module füge ich dann auch so ein und nutze die darin definierten Variablen direkt im Hauptprogramm.
Aber gerade bei Codezeilen wie letzteZeile, welches in 3 Varianten vorliegt, muss ich immer wieder Anpassungen treffen (Spaltennummer zum Beispiel) und der Code wird dann an verschiedenen Stellen im Programm mit verschiedenen Abfragen belegt. Es wäre nun aber aufwendiger diese eine Codezeile als Sub zu definieren, da immer wieder neue Variablen übergeben werden müssen und für mich somit das prüfen des Gesamtcodes schwieriger wird (ich muss ja dann auch immer die vielen Subs durchgehen).

Autoit werde ich mir einmal anschauen, aber ich glaube nicht, dass dies der Weisheit letzter Schluss ist. Denn wir reden nicht nur über 10 Standardcodezeilen, die ich immer wieder verwende.
 
Eine zentrale XLAM anlegen und dort jegliche Programmierung tätigen. Als zentrale Datei muss die Programmierung angepasst werden, denn im Gegensatz zu Codeschnipseln in separaten XLSM kann nicht erwartet werden, dass alles vorhanden ist.
In der XLAM wird dann
- eine Ribbon Oberfläche mit dem Custom UI Editor angelegt
- ein eigenes Modul als RibbonHandler angelegt der sowohl die OnAction/OnChange der Oberfläche abfängt als auch CallBacks integriert
- ein sinnvolles Klassendesign für deine ständig wiederkehrenden Aufgaben entwickelt.

In den ausführenden Prozeduren werden dann nur noch neue Objekte erstellt (häufig über Factory Pattern) und die führen alles aus. Und diese liegen ausschließlich in der XLAM!

In den Excel Optionen wird das ganze über Erweitert > "Beim Start alle Dateien öffnen in: ..." eingebunden
Per Gruppenrichtlinie ist das Benutzer > Richtlinien > Administrative Vorlagen > MS Excel xxxx\ExcelOptionen\Erweitert > Alternativer Startpfad für Startdatei

Im TrustCenter wird eingestellt
- Makros ohne Meldung deaktiviert
- Vertrauenswürdige Speicherorte: Der Startup Pfad, zusätzlich eventuell die Option "Pfade im netzwerk zulassen" sofern es halt im Netzwerk liegt.
 
Hallo Allan,
ich kenne die Situation auch: Mal schnell ne Variable qualifiziert über debug.print ausgeben oder eine komplexe Objektvariable deklarieren. Oder auch nur schnell zu einer bestimmten Prozedur springen. Immer wieder hast du bei VBA Standardaufgaben, die unnötige Tipperei oder Klickerei kosten, weil du mit VBA Excel gut automatisieren kannst, nicht aber VBA selbst.

Vielleicht solltest du die Sache mit AutoIt doch näher betrachten?

Ich selbst nutze AHK (vergleichbar mit AutoIt), um mir nicht nur Textbausteine auf Kürzel zu legen, sondern auch komplexere Tests und Verzweigungen in VBA darauf zu legen. Zusätzlich hilft mir AHK auch in Excel selbst dabei, Tasten zu belegen, die sich mit Excel allein nicht belegen lassen (z. B. "Spur zum Vorgänger" auf Browser_zurück-Taste) bzw. Befehle auszulösen, die sich per VBA nicht so gut umsetzen lassen (z. B. aktuelle Zelle mit Link auf im anderen Fenster geöffnete Internetseite/Datei versehen). Insgesamt verwende ich allein innerhalb der VBA-Umgebung ca. 50 verschiedene AHK-Befehle und Textbausteine und es ist denkbar einfach.

In der Kombination AHK/VBA ist dann fast alles möglich.:)

Viele Grüße, Halwe
 
Zurück
Oben