Tag: VBA

Excel VBA Makro 2003 – Hello World in eine Zelle

Nachdem ich das letzte Mal gezeigt habe, wie man auf Knopfdruck ein “Hello World” Dialog in Excel 2003 erscheinen lassen kann, probieren wir diesmal den Wert direkt in die Zelle einzufügen. Dafür gibt es wahrscheinlich, wie in kaum einer anderen Programmiersprache, unendliche viele Möglichkeiten.

Wir beschränken uns wie bisher auf das Notwendigste. Ein Button und eine Sub Funktion “Schaltfläche1_BeiKlick”.

Die wohl einfachste Möglichkeit ist diese:

[PHP]
Sub Schaltfläche1_BeiKlick()

ActiveWorkbook.ActiveSheet.Cells(1, 1) = “Hello World”

End Sub
[/PHP]

Damit ich jetzt nicht immer zwischen Text und Codeboxen und hin und her wechseln muss, schreibe ich die Kommentare direkt in den Code. Kommentare werden in VBA mit ” ‘ ” gekennzeichnet

[PHP]
Sub Schaltfläche1_BeiKlick()

‘ Aktuelle_Datei.Aktuelles_Tabellenblatt.Zellen(Zeile, Spalte’
ActiveWorkbook.ActiveSheet.Cells(1, 1) = “Hello World”

‘ Ein bisschen schöner’
ActiveWorkbook.ActiveSheet.Cells(2, 1).Value = “Hello World”

‘ Mit festen Werten’
Workbooks(“VBAMakro.xls”).Sheets(“Tabelle1”).Cells(3, 1) = “Hello World”

‘ Statt Cells einfach Range verwenden, jedoch kommt jetzte die Spalte zuerst’
Workbooks(“VBAMakro.xls”).Sheets(“Tabelle1”).Range(“A4”) = “Hello World”

‘ Reiner Text durch Formeln ersetzen’
ActiveWorkbook.ActiveSheet.Cells(5, 1).Value = “=1+1”
‘ Ausgabe: 2 ‘

‘ Funktioniert auch ohne Value’
ActiveWorkbook.ActiveSheet.Cells(6, 1) = “=1+1”

End Sub
[/PHP]

Was am Anfang sicherlich ungewöhnlich ist, das bei Cells und Range die Spaltenangabe bzw. die Zeilenangabe vertauscht ist.

Anmerkung: Das ‘ am Ende jeden Kommentars ist nicht zwingend notwendig, aber es sieht dann in der Codeansicht einfach besser aus.

Excel VBA Makros in Google Spreadsheets

Der Eine oder Andere wird sich fragen, wozu man sich überhaupt noch mit Makros beschäftigen sollte, schließlich ist das Alles von Microsoft und im Zeitalter der online Office Suiten eh nicht mehr zu gebrauchen. Google scheint das ein bisschen anders zu sehen. Unter http://www.googlewatchblog.de/2008/05/28/google-docs-demnaechst-mit-macros/ gibt es Beobachtungen die darauf hindeuten, das es man bald Makros in Google Spreadsheets verwenden kann. Die Schätzung von drei Monaten in dem Artikel ist momentan natürlich ein bisschen überholt und bisher geht es auch nicht – zumindestens in mit meinen Google Documents.

Trotz allem, glaube ich, wird es früher oder später möglich sein, das in Google Spreadsheets Makros zu benutzen, weil viele Unternehmen so spezielle Anforderungen haben, die sich mit den normalen Excel Funktionen nicht abbilden lassen.

Excel VBA Makro 2003 – Hello World

Als ich mit der VBA Makro Programmierung in Excel angefangen habe, war der Tipp, man sollte einfach ein Makro aufzeichnen und schauen wie es funktioniert und entsprechend abändern. Diese Herangehensweise hat mich nicht so recht befriedigt. Von daher hier mal ein anderer Versuch:

Zuerst basteln wir uns einen Button in unser Excel – Sheet. Dazu gehen wir übers Menü Ansicht -> Symbolleisten -> Formular und blenden die entsprechende Symbolleiste ein. In der erscheinenden Symbolleisten ist das Element Schaltfläche zu wählen.

Achtung: ein ähnlicher Button befindet sich auch in der Steuerelemente Toolbox. Dieser hat jedoch nicht das gleiche Verhalten wie eine Formular-Schaltfläche.

Nachdem wir die Schaltfläche auf dem Sheet platziert haben, öffnet sich das Fenster Marko zuweisen. Die angezeigte Liste sollte noch komplett leer sein. Es könnten jedoch auch Makros aus anderen Sheets angezeigt werden.

Beim Klicken auf Neu sollte sich der Editor öffnen und der Cursor bereits an der korrekten Stelle blinken.

Anmerkung: Eine Sub ist ähnlich wie eine Funktion mit dem Unterschied, das eine Funktion einen Rückgabewert haben kann. Abgesehen davon ist mir bisher kein weiterer Unterschied bekannt.

In die Sub “Schaltfläche1_BeiKlick()” tippen wir folgendes ein:
[php]
MsgBox “Hello World”
[/php]

Der gesamte Code sollte dann so ausschauen:

[php]
Sub Schaltfläche1_BeiKlick()
MsgBox “Hello World”
End Sub
[/php]

Speichern das Ganze und gehen zurück zu unserem Excel Sheet. Dort können wir die Formular Symbolleiste schließen und kurz ins Leere klicken, damit unser Button den Focus verliert. Anschließend auf den Button klicken. Folgende Meldung sollte erscheinen:

Noch zwei Anmerkungen:
1. Wie man sieht, kommt VBA komplett ohne Semikolons aus. Sobald man welche setzen will, erscheint sogar eine Fehlermeldung.

2. In diesem Beispiel habe ich Umlaute wie ä, ö, ü im Subnamen unberücksichtigt gelassen, weil das Beispiel so einfach wie möglich sein, sollte. Generell sollte man solche Sonderzeichen jedoch immer entfernen.

VBA Excel Makros für Aufsteiger, Umsteiger, Durchsteiger

Dies soll eine kleine Artikelserie über VBA Makros in Excel werden. Je nachdem wie viel Zeit ich die nächsten Tage, Wochen, Monate oder Jahre habe, ist die Serie früher oder später zu Ende. Bevor wir jedoch mit den praktischen Tipps beginnen, etwas Grundsätzliches zu und über Excel VBA Makros und dieser Serie.

1. Warum eine Serie über Excel VBA Makros? Im Internet gibt es doch schon alles was man braucht!
Diese Serie ist nicht um Excel VBA Makros vollständig zu erlernen. Sie soll Menschen die bereits andere Sprachen können, wie z.B.: Java, PHP oder C++ helfen sich schnell in VBA Makros wohl zu fühlen.

Außerdem möchte ich an dieser Stelle darauf hinweisen, auf Makros zu verzichten. Unabhängig davon ob in Excel oder sonst irgendwo. Die Gründe dafür sind folgende:

1. Ein Sicherheitsrisiko
2. Kompatibilitätsprobleme zwischen verschiedenen Office Versionen
3. Usability unfreundlich
4. Geschwindigkeitseinbußen

Bevor man also mit der Makroprogrammierung beginnt, sollte man erstmal schauen ob es nicht auch einfach mit den Excel Funktionen lösen kann. In meinem Fall war es offensichtlich, das es mit reinen Excel Funktionen nicht möglich ist.

Die Aufgabenstellung war es, ein Excel Sheet zu basteln, welches automatisiert Zellen aus anderen Excel Sheets ausliest, interpretiert und ein neues Sheet mit den ausgelesenen Werten erstellt.

Noch zur letzten Frage: Warum erscheint diese Serie überhaupt im BugBlog?
Ganz einfach weil man bei der VBA Programmierung immer das Gefühl hat, man steht vor einem Bug der sich dann doch als Feature entpuppt.