Tipps und Tricks zu VBA

VBA: Ausführen von Makros unter Office 2000 und höher


Aufgrund der immer größer werdenden Virengefahr werden Dateien mit Makros in Office 2000 und höher (bzw. Access 2003 und höher) nicht mehr standardmäßig mit mittlerem Virenschutz ausgeführt, bei dem nachgefragt wird, ob Makros aktiviert werden sollen. Haben Sie keinen unterstützten Virenscanner installiert, hat Office nach der Installation den Virenschutz auf „hoch“ eingestellt. Damit werden alle Makros ohne Rückfrage deaktiviert. Wenn Sie VBA-Programmierung in einigen Dateien nutzen möchten, müssen Sie den Virenschutz über Extras/Makro/Sicherheit auf „mittel“ einstellen.

VBA 6.0: Zeichen innerhalb von Zeichenketten ersetzen

Neu in VBA 6.0 ist die Funktion Replace. Sie ist ganz hilfreich, bspw. wenn Sie in einer Zeichenkette einzelne Zeichen ersetzen möchten.

Sie können damit bspw. ein Dezimalkomma in einer Zeichenkette durch einen Dezimalpunkt ersetzen, indem Sie die Funktion wie folgt aufrufen:

replace("10,75",",",".")

Als ersten Parameter übergeben Sie die Zeichenkette, als zweiten das zu suchende Zeichen und als drittes das Zeichen, das das zu suchende Zeichen ersetzen soll. Sowohl der zweite als auch der dritte Parameter können aber auch mehrere Zeichen enthalten und dürfen unterschiedlich lang sein.

VBA 6.0: Endlosschleifen nutzen

Trotz der Objektorientierung von VBA und der damit einhergehenden Unterstützung von Ereignissen gibt es immer noch Einsatzbereich für Endlosschleifen. Problematisch sind solche Schleifen nur dann, wenn sie ungeschickt verwendet werden, weil Sie dann dazu führen, dass die Anwendung nicht mehr reagiert, weil die Anwendung ausschließlich mit der Ausführung der Schleife beschäftigt ist. Sie können das vermeiden, indem Sie innerhalb der Schleife die Anweisung DoEvents verwenden. Sie sorgt dafür, dass zwischendurch eintretende Ereignisse, wie Benutzereingaben abgearbeitet werden. Eine solche Schleife könnte bspw. wie folgt aussehen:

Sub test()
Do
'HIER STEHEN DIE SCHLEIFENANWEISUNGEN
DoEvents
Loop
End Sub

VBA: Schrittweite in for-Schleifen

In For-To-Next-Schleifen können Sie nicht nur Anfangs- und Endwert der Schleife bestimmen, sondern auch die Schrittweite, in dem Sie die optionale Angabe Step verwenden. Möchten Sie bspw. nur Gerade Zahlen als Werte für die Zählvariable verwenden, muss die Schleife dazu wie folgt aussehen.

For I=2 to 10 Step=2
...
Next I

Schutz vor Viren

Es gibt verschiedene Verhaltensweisen, die Ihnen helfen sich auch ohne Firewall und teure Virenscanner weitestgehend vor E-Mail-Viren und Würmern zu schützen:

  • Löschen Sie E-Mails, wenn Sie sie von einem Absender bekommen, von dem Sie keine E-Mail erwarten oder den Sie gar nicht kennen und leeren Sie hinterher auch den Papierkorb.
  • Klicken Sie niemals wahllos auf Links in E-Mails.
  • Öffnen Sie keinen Anhand einer E-Mail, wenn Sie nicht einen Anhang von diesem Empfänger erwarten
  • Vor allem bei folgenden Dateitypen in Anhängen sollten Sie vorsichtig sein: EXE, VBS, JS, HTML, HTM sowie den Office 97/2000 Dateien.
  • Wenn Sie Excel 5/7 oder Office 97/2000 Dateien öffnen, die Sie per E-Mail bekommen haben, sollten Sie vorher unbedingt den Virenschutz des Programms aktivieren und mindestens auf „Mittel“ stellen. Deaktivieren Sie dann Makros, falls Sie danach gefragt werden und sehen Sie sich die Makros genau an, falls Sie Ahnung von VBA haben.
  • Verwenden Sie den Regelassistenten von Outlook oder Outlook Express um bekannt Viren vollautomatisch beim Download zu löschen.

Wenn Sie diese grundlegenden Regeln beachten, reduzieren Sie die Virengefahr schon erheblich. Ein aktuellen Virenscanner verbessert diesen Schutz noch, kann jedoch neue Viren in der Regeln nicht erkennen. Immerhin sind Sie damit vor den schon bekannten Viren geschützt.

VBA: Listenfelder leeren

Wenn Sie in UserForms Listenfelder verwenden, stellt sich oft das Problem, dass diese irgendwann geleert werden müssen. Dazu ist es nicht notwendig, dass alle Einträge einzeln gelöscht werden. Sie können die ganze Liste mit der Clear-Methode leeren. Vorausgesetzt das Listenfeld hat den Namen lstListe, können Sie den Inhalt mit lstListe.Clear löschen.

VBA: Objektvariablen deklarieren und verwenden

Wenn Sie in VBA Objektvariablen verwenden möchten, also Variablen die auf Objekte verweisen, sollten Sie diese natürlich auch deklarieren. Wichtig ist, dass diese Variablen vom Typ Object definiert wird. Dazu müssten die Deklaration z.B. wie folgt lauten:

Dim objVar As Object

Sie können jedoch auch eine bestimmte Klasse angeben, wenn Sie bereits wissen, welches Objekt die Variable später speichern soll. Die folgende Deklaration definiert z.B. eine Objektvariable der Klasse Range.

Dim objRange As Range

Diese Objektvariable kann dann nur Objekt vom Typ Range aufnehmen. Wenn Sie einer Objektvariablen einen Wert zuweisen möchten, müssen Sie dazu die Set-Anweisung verwenden. Die folgende Anweisung weist der Objektvariablen objRange die Zelle A1 des aktiven Excel-Tabellenblattes zu:

Set objRange=ActiveWorkbook.ActiveSheet.Range("a1")

Verweise erstellen

Wenn Sie programmübergreifende VBA-Anwendungen erstellen oder z.B. unter Excel Objekte von Word, PowerPoint oder Access nutzen möchten, gibt es da im Prinzip zwei Möglichkeiten. Die eine besteht darin, Sie definieren eine Variable als mit dem Datentyp Object und weisen ihm dann das von der CreateObject-Methode zurückgegebene Application-Objekt zu. Sie können dann alle Eigenschaften und Methoden des Application-Objekts nutzen. Allerdings müssen Sie dann die Objekte und Methoden auswendig kennen. Wenn Sie eine Variable nur vom allgemeinen Typ Object definieren, weiß IntelliSense nicht, welche Eigenschaften und Methoden das Objekt hat. Daher werden Sie auch nicht aufgelistet. Möchten Sie IntelliSense nutzen, müssen Sie dazu einen Verweis auf die entsprechende Objektbibliothek der anderen Anwendung erstellen. Dazu wählen Sie im Menü der IDE Extras/Verweise aus. Alle möglichen Objektbibliotheken werden nun in einem Dialog aufgelistet. Um einen Verweis darauf zu erstellen, aktivieren Sie einfach das Kontrollkästchen vor dem Eintrag. Wenn Sie z.B. in einer anderen Office-Anwendung Word nutzen möchten, aktivieren Sie den Listeneintrag „Microsoft Word 9.0 Object Library“. Nach Schließen des Dialogs mit OK steht die Objektbibliothek zur Verfügung. Sie könnten dann z.B. eine Objektvariable wie folgt definieren:

Dim objAppWord As Word.Application

Wenn Sie nun objAppWord gefolgt von einem Punkt eingeben, zeigt die IDE IntelliSense für das Word.Application-Objekt an. Neben der Verfügbarkeit der Programmierhilfen hat die Verwendung von Verweise noch einen Vorteil. Der Zugriff auf das Objekt, auf das die Objektvariable verweist, ist wesentlich schneller, wenn VBA der Type des Objektes bekannt ist. Sie können also gerade bei Verwendung vieler Objekte einen großen Geschwindigkeitszuwachs Ihrer Anwendung erreichen.

VBA: Office-Anwendungen starten

Wenn Sie bspw. aus Excel Word starten möchten, oder aus Access Excel starten möchten, gibt es dazu verschiedene Möglichkeiten, einmal die Shell-Methode und zum anderen die CreateObject-Methode. Letztere hat den Vorteil, dass Sie damit auch auf das Objektmodell der entsprechenden Anwendung zugreifen und diese mit VBA steuern können. Das funktioniert natürlich nur dann, wenn es sich um eine VBA-Hostanwendung handelt; Mit Shell können Sie jedoch jede beliebige Anwendung starten. Um mit CreateObject eine Anwendung zu starten, benötigen Sie lediglich deren Klassenbezeichnung. Folgende Anweisung startet z.B. Word 97:

Set WWApp=CreateObject("Word.Application.8")

WWApp ist eine Variable vom Typ Object oder Word.Application. Wenn Sie sie als Word.Application definieren möchten, müssen Sie dazu einen Verweis auf die Objektbibliothek von Word einrichten. Die Variable verweist nun auf das Application-Objekt von Word und Sie können nun dessen Methoden verwenden. Mit WWApp.Quit können Sie z.B. Word beenden.

Tabelle 1: Klassennamen der Office-Anwendungen
Klassen-Name Anwendung
Word.Application Word
Excel.Application Excel
Access.Application Access
PowerPoint.Application PowerPoint
Outlook.Application Outlook

Rechtliche Rahmenbedingungen

Alle Inhalte wurden nach bestem Wissen und Gewissen zusammengestellt. Ich übernehme für Fehlerfreiheit allerdings keine Gewähr und hafte keinesfalls für Folgen, die sich aus Fehlern oder unsachgemäßem Gebrauch des Codes und der Inhalte ergeben.
Code und Beispiele dürfen für den privaten Gebrauch frei verwendet werden. Eine Veröffentlichung (auch auszugsweise) sowohl online wie auch auf klassischen Medien ist nur nach meiner ausdrücklichen Zustimmung möglich. Verlinkung der Artikel ist jedoch erlaubt und erwünscht, solange immer auf die Webseite und nicht die PDF-Datei verlinkt wird.

Tipps und Tricks zu Word

Word gehört zu den Programmen, die sich mit nützlichen Tastenkombinationen und Einstellungen besonders effizient bedienen lassen. Dennoch haben manche Anwender immer wieder mal Probleme. Hier finden Sie daher einige Tipps und Tricks für den Alltag mit Word.

Word: Großschreibung am Satzanfang bei Eingaben deaktivieren

Standardmäßig schreibt Word Wörter am Satzanfang groß. In der Regel ist das auch ganz nützlich. Lästig ist es nur dann, wenn Sie bspw. Tabelle mit Tabulatoren erstellen möchten, und dazu in der ersten Spalten Wörter eingeben müssen, die kleingeschrieben werden. Sobald Sie dann die [Tab]-Taste drücken, um in die nächste Spalte zu springen, wird das Wort in der ersten Spalte korrigiert. Damit das nicht passiert, fügen Sie den Tabulator einfach mit [Strg]+[Tab] ein.

Word: Festes Leerzeichen eingeben

Möchten Sie verhindern, dass zwei Wörter, die zusammen gehören durch die Zeilentrennung getrennt werden, müssen Sie dazu zwischen den beiden Wörtern nur ein festes Leerzeichen einfügen. Um ein solches Zeichen einzufügen, drücken Sie gleichzeitig [Strg]+[Umsch]+[Leer].

Word: Tastenkombination für kursive Formatierungen

Wenn Sie viel mit Word schreiben, und immer wieder einzelne Wörter kursiv formatieren müssen, ist es ziemlich lästig, wenn Sie dazu immer wieder die Hände von der Tastatur nehmen müssen, zur Maus greifen, das Wort formatieren und dann auf die Schaltfläche klicken müssen. Viel einfacher geht das, wenn Sie die Pfeiltasten dazu nutzen, den Cursor in das Wort zu stellen und dann [Strg]+[Umsch]+[K] drucken, um das Wort kursiv zu formatieren, in dem der Cursor steht.

Sonderzeichen in Feldfunktionen verwenden

Wenn Sie Feldfunktionen in Word verwenden, in denen bestimmte Zeichen, z.B. der Doppelpunkt in Indexfeldern als Sonderzeichen verwendet werden, macht das natürlich Probleme, wenn Sie bspw. einen Indexeintrag erstellen möchten, der selbst einen Doppelpunkt erzeugt. Um ein solches Zeichen als Teil des Textes in einer Feldfunktion zu markieren, müssen Sie jedoch nur einen Backslash „\“ vor das Zeichen setzen.

Word: Absatzformate sichtbar machen

Wenn Sie mit Dokumentvorlagen arbeiten und längere Dokumente mit Absatzformaten formatieren müssen, die nicht auf den ersten Blick erkennen lassen um welches Format es sich handelt, ist es ganz nützlich nicht erst den Cursor in den Absatz stellen zu müssen um das verwendete Format angezeigt zu bekommen. Sie können dazu ganz einfach eine Spalte einblenden lassen, in der in der Normalansicht die verwendeten Absatzformate angezeigt werden. Wählen Sie dazu „Extras/Optionen“ aus und setzen Sie auf der Registerkarte Ansicht den Wert im Feld „Breite der Formatvorlagenanzeige“ auf einen Wert ungleich 0 z.B. 2 cm.

Word 95 und höher: Indexeinträge festlegen

Wenn Sie in einem Word-Dokument Indexeinträge festlegen möchten, geht dies über „Einfügen/Index“ und „Verzeichnisse/Eintrag“ festlegen

Dies ist natürlich sehr umständlich, insbesondere wenn viele Indexeinträge bestimmt werden müssen. Viel schneller geht dies, wenn Sie das Wort markieren, für das ein Indexeintrag erstellt werden soll und dann [Umsch] + [Alt] + [X] drücken.

Word 95 und höher unter Windows 2000/XP: Indexeinträge können nicht über die Tastenfolge festgelegt werden

Wenn Sie die oben genannte Tastenfolge zum Festlegen der Indexeinträge verwenden, kann es passieren, dass dies plötzlich nicht mehr funktioniert. Das liegt daran, dass Windows 2000/XP standardmäßig eine Tastenfolge vorsehen, mit denen das Eingabegebietsschema (Tastaturbelegung) gewechselt werden kann. Diese Tastenfolge ist [Umsch] + [Alt]. Wenn Sie es also nicht schafften, die drei Tasten [Umsch] + [Alt] + [X] exakt gleichzeitig zu drücken, wertet Windows schon die Folge [Umsch] + [Alt], bevor Word dazu kommt das [X] zu erkennen. Die Lösung ist aber ganz einfach. Stellen Sie zum Umschalten der Tastaturbelegung einfach eine andere oder gar keine Tastenkombinationen ein.

  1. Dazu wählen Sie Start/Einstellungen/Systemsteuerung aus öffnen dann die Ländereinstellungen. Haben Sie in Windows XP die Kategorie-Ansicht aktiviert heißt das Symbol „Datums-, Zeit-, Sprach- und Regionaleinstellungen“ in der „Klassischen Ansicht klicken Sie auf „Regions- und Spracheinstellungen“.
  2. Aktivieren Sie nun die Registerkarte „Sprache“ und klicken Sie auf „Details“.
  3. Klicken Sie auf „Tastatur“ und dann auf „Tastenkombination ändern“.
  4. Um die Tastenkombination zu löschen, deaktivieren Sie nun beide Kontrollkästchen und schließen alle Dialogfelder mit „OK“.

Word + FrontPage: Einfügen von Text in Word über die Zwischenablage

Wenn Sie Text aus dem FrontPage Editor über die Zwischenablage in Word einfügen, dauert das in der Regel recht lange. Außerdem fügt Word dann auch die HTML-Tags und Formatierungen mit ein, die in FrontPage zur Formatierung notwendig waren. Wenn Sie nur den reinen Text benötigen, sollten Sie statt „Bearbeiten/Einfügen“ „Bearbeiten/Inhalte einfügen“ auswählen und damit den Text als unformatierten Text in das Dokument einfügen.

Rechtliche Rahmenbedingungen

Alle Inhalte wurden nach bestem Wissen und Gewissen zusammengestellt. Ich übernehme für Fehlerfreiheit allerdings keine Gewähr und hafte keinesfalls für Folgen, die sich aus Fehlern oder unsachgemäßem Gebrauch des Codes und der Inhalte ergeben.
Code und Beispiele dürfen für den privaten Gebrauch frei verwendet werden. Eine Veröffentlichung (auch auszugsweise) sowohl online wie auch auf klassischen Medien ist nur nach meiner ausdrücklichen Zustimmung möglich. Verlinkung der Artikel ist jedoch erlaubt und erwünscht, solange immer auf die Webseite und nicht die PDF-Datei verlinkt wird.