programmiersprachen:vba

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
programmiersprachen:vba [2008/05/08 18:01] stprogrammiersprachen:vba [2013/12/19 20:35] (aktuell) st
Zeile 1: Zeile 1:
 +====== VBA ======
 +  * **VB** = Visual Basic
 +  * **VBA** = Visual Basic for Applications: Spracherweiterung für (MS) Office Programme
  
 +[[Beispielcode]]
 +
 +
 +
 +===== Kommentare =====
 +
 +  * einzeilige Kommentare <code vba> ' Das ist mein Kommentar</code>
 +  * mehrzeilige Kommenare gibts nicht, man muss jede Zeile mit ' anfangen.
 +  * STRG-Pause unterbricht ein (endlos?) laufendes VBA-Programm
 +
 +
 +
 +
 +
 +===== Links =====
 +  * [[http://www.cmp-online.de/vba.htm#_Toc483226798|VBA Grundlagen]]
 +  * [[http://www.excel-center.de/excel/handbuch.php|VBA (Excel) Handbuch]]
 +  * [[http://www.xlam.ch/xlimits/excelvba.htm|Limitationen in Excel-VBA und -Objektmodell]]
 +  * **[[http://www.htl-steyr.ac.at/~morg/pcinfo/Excel/exce9uxx.htm|Excel 4 Funktionsliste Deutsch/Englisch]]**
 +  * [[http://excelwelt.de/Makros/range.html|Die Range-Methode]]
 +
 +
 +===== Besonderheiten =====
 +  * unterscheidet nicht zwischen Groß- und Kleinschreibung, Variablen müssen nicht zwangsläufig deklariert werden, sie bekommen dann den Typ ''Variant'' d.h. je nach den Daten ändert sich der Typ (das kostet aber viel Speicherplatz!). Außerdem kann es zu unvorhersehbaren Effekten kommen, also sollte man besser mit dem Satz ''Option explicit'' (außerhalb aller Prozeduren und Funktionen) die genaue Deklaration erzwingen.
 +  * Kommentare leitet man mit ' (Hochkomma) ein
 +  * Deklarieren: ''Dim c As Double''
 +  * um z.B. Strukturen zu erweitern benutzt man ReDim: z.b. <code vb>ReDim Preserve Feld(51)</code>
 +  * (Leerzeichen)_ bedeutet der Code in nächster Zeile weitergeht
 +  * Datentypen kann man auch mit speziellen Zeichen festlegen, z.B. # für double
 +  * Verknüpfen von strings mit &
 +
 +==== Objekte ====
 +
 +  * [[http://www.herber.de/mailing/vb/html/xlobjrange.htm|Range]]
 +
 +===== Felder (Arrays) =====
 +<code vb>Dim DasFeld1(30) as Integer</code> bzw. wenn 1 der unterste Wert sein soll:
 +<code vb>Dim DasFeld1(1 to 30) as Integer</code>
 +
 +===== Schlüsselwörter =====
 +function => Funktion\\ 
 +Sub => Prozedur
 +
 +Der Funktionsname ist gleichzeitig der Name der Variablen die den **Rückgabewert** enthält.
 +
 +===== Tastenkombinationen =====
 +
 +^ Tastenkombination ^ Wirkung ^
 +| STRG-LEERTASTE  | Vervollständigen des Namens  |
 +| Alt+F8  | Funktion/Prozedur ausführen  |
 +| STRG-Unterbr  | **Tastenkombination zum Abbrechen fehlerhafter Programme **  |
 +| Alt-F11  | ruft die integrierte Entwicklungsumgebung auf  |
 +
 +===== Strings =====
 +
 +  * Vor dem Vergleichen von Strings:
 +    - Trimmen (trim)
 +    - auf Uppercase setzen (ucase)
 +sonst bekommt man falsche Ergebnisse, da Groß und Kleinschreibung unterschiedliche sein können
 +
 +Anführungszeichen in string erhält man durch [[http://vb-tec.de/strquote.htm|verdoppeln der Anführungszeichen]].
 +
 +==== Zugriff auf Zellen (Excel) ====
 +geht einfach im ausgewählten Tabellenblatt mit
 +  * <code vb>Cells(Reihe, Spalte)</code>
 +oder über Offset Reihe=256, Zelle B1 wäre also 257:
 +  * <code vb>Cells(257)</code>
 +
 +
 +Ansonsten mit fester Angabe von Tabellenblatt und Zelle(n):
 +<code vb>Worksheets("Tabelle1").Range("A1:J10").Value = Hallo</code>
 +Value ist eine Eigenschaft, es könnte auch z.B. Clear sein.
 +
 +
 +===== Typumwandlungen =====
 +
 +^ Von (Datentyp) ^ zu (Datentyp) ^ Funktion ^
 +|  string | Zahl | val(STRING) :!: funktioniert nicht bei allen Zeichenketten (abc123 wird NICHT zu 123 umgewandelt). Wenn die Umwandlung nicht möglich ist bzw. man nur Buchstaben hat, wird 0 zurück geliefert. |
 +| ? | Single | Csng |
 +| ? | String | Cstr |
 +| ? | Variant | CVar |
 +| ? | ? für Benutzer-Fehler-Codes | CVErr |
 +| Ausdrücke ? | | Format |
 +| Zahl | in Hexadezimal | Hex |
 +| Zahl | inOctal | Oct |
 +| Long | String ( Variant) | Str |
 +
 +FIXME
 +
 +IsNummeric
 +IsDate
 +
 +FIXME
 +
 +CStr, Cdbl, ...
 +
 +
 +
 +===== Beispiele =====
 +<code vb>
 + Function test_a_b(a As Integer, b As Integer)
 + test_a_b = a + b
 + End Function
 +</code>
 +
 +===== Tricks =====
 +
 +==== Performance verbessern ====
 +<code vb>
 +' Application.ScreenUpdating = True
 +CODE
 +' Application.ScreenUpdating = False
 +</code>