Tabellenkalkulation - Visual Basic (Makros)

Makros

Was ist ein Makro?

Unter Makros versteht man eine Softwarekomponente, die eine Folge aus Anweisungen zusammenfasst und diese gegebenefalls ausführt.
Alle Anweisungen des Makros werden automatisch an der Stelle ausgeführt, an der die Aufzeichnung begonnen wurde.

Makro aufzeichnen

Um ein Makro aufzuzeichnen benötigt man den Makro - Recorder, der unter EXTRAS - MAKRO - AUFZEICHNEN zu finden ist.

Wenn die Aufzeichnung gestartet ist, muss sie wieder beendet werden, indem man beim erscheinenden Zusatzfenster auf AUFZEICHNUNG BEENDEN geht.

Makro ausführen



Visual Basic for Applications

Visual Basic Editor

EXTRAS - MAKROS - VISUAL BASIC EDITOR oder ALT + F11

Objekte und Hierachie

  1. APPLICATION - Excel Fenster
  2. WORKBOOK - Excel Arbeitsmappe
  3. WORKSHEET - Tabellenblatt
  4. RANGE - Zellenbereich (eine oder mehrere Zellen)


Prozedur

Sind eine Folge von Anweisungen, die bestimmte Aufgaben wiederverwendbar machen.

Sub Prozedurname ()
...
Anweisung(en)
...
End Sub


Kommentare

Kommentare werden mit einem einfachen Hochkomma begonnen.

' Hier wird die Gesamtsumme der Mitarbeiter errechnet
Sub GesamtsummeMA ()
...


Formeleintrag

Formula - Formel umfasst einen absoluten Bereich

... Formula = "=SUM(A1:A20)"
... Formula = "=AVERAGE(A1:A20)"

FormulaR1C1 - Formel umfasst einen relativen Bereich
R … Row C … Column

... FormulaR1C1 = "=SUM(R[-20]C[-1]:R[-1]C[-1])"
... FormulaR1C1 = "=AVERAGE(R[-20]C[-1]:R[-1]C[-1])"

…Local - würde Formeln in deutscher Sprache zulassen

... FormulaLocal = "Summe(A1:A20)"
... FormulaR1C1Local = "Mittelwert(R[-20]C[-1]:R[-1]C[-1])"


Variable

Variablen sind eine Art von Platzhalter für Zeichenfolgen, Werte und Objekte.

 Dim VARIABLENNAME As VARIABLENTYP
Variablentypen

Die gebräuchlichen Variablentypen:

Variablentyp Res.Speicherplatz Beschreibung
Boolean 16 Bit, 2 Bytes WAHR (-1) oder FALSCH (0)
Byte 8 Bit, 1 Byte 0 … +255
Integer 16 Bit, 2 Bytes -32.768 … +32.767
Long 32 Bit, 4 Bytes -2.147.483.648 … +2.147.483.647
Currency -922.337.203.685.477,5808 … +922.337.203.685.477,5807
Single 32 Bit, 4 Bytes 3,402823E38 … 1,401298E-45 und 0
Double 64 Bit, 8 Bytes -1.79769313486231E308 bis -4,94065645841247E-324 für negative Werte und von 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte und 0
Date 64 Bit, 8 Bytes Datum und Zeit
String Zeichenfolgen
Object 32 Bit, 4 Bytes Objekte
Variant 128 Bit, 16 Bytes Alle Typen, Voreinstellung
Objekttyp Objekte wie Workbook, Range
benutzerdefinierter Typ ein oder mehrere Elemente jeden Datentyps. Der Aufbau wird mit einer Type-Anweisung deklariert
Ebene für Variable

Prozedurebene:
Eine Variable ist innerhalb einer Prozedur deklariert und nur dort gültig.
Modulebene:
Eine Variable ist innerhalb eines Moduls, in jeder Prozedur gültig und wird im Moduldkopf deklariert.

Konstante

Eine Konstante ist ein definierter, fester, unveränderlicher Wert.

 Const KONSTANTENNAME As KONSTANTENTYP = AUSDRUCK
 
 Const Zahl As Single = 1.1


IF Anweisung

Bei der IF … THEN … ELSE Anweisung muss die Bedingung TRUE oder FALSE entsprechen, damit die nachstehenden Anweisungen durchgeführt werden können.

IF Bedingung THEN
  Anweisung1
  ELSE
  Anweisung2
EndIF


For - Next Anweisung

Wiederholt eine Reihe von Anweisungen so oft wie angegeben.

For Zähler = Anfang To Ende [Step Schritt]
  [Anweisungen]
  [Wiederholung For]
  [Anweisungen]
  [Exit For]
  [Anweisungen]
Next 


Do While Schleife

Die Do While Schleife wird in jedem Fall einmal durchlaufen. Sie ist damit nachprüfend.

DO WHILE Logischer Ausdruck
Anweisung(en)
LOOP


Messagebox (MsgBox)

Erzeugt eine gewünschte Meldung, in einem Dialogfeld, auf dem Bildschirm an!

MsgBox(prompt[, buttons][, title])

MsgBox ("Befehl ausführen?", vbYesNo + vbQuestion, "Anfrage")
MsgBox ("Befehl ausführen?", 4 + 32, "Anfrage")

prompt … Ein String der als Meldung im Dialogfeld angezeigt wird
buttons … Anzahl und Art der gewünschten Schaltfläche am Dialogfeld
title … Sting der den Titel des Dialogfeldes bestimmt

Folgende Buttons und Symbole kann eine MsgBox enthalten:


Rückgabewerte der Buttons:


Inputbox

Hiermit kann einer Variable eine Eingabe zugewiesen werden!

VARIABLENNAME = Inputbox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Vorname = Inputbox ("Bitte geben sie Ihren Vornamen ein!", "Anfrage Vorname", "Hier eintragen")



WITH Funktion

Mit Hilfe dieser Funktion können Formatierungen vorgenommen werden!

 With Selection.Interior  'Innerhalb der Zellen 
      .ColorIndex = 43    'Grüne Farbe
      .Pattern = xlSolid  'Hintergrund vollflächig färben
  End With

Das Zahlenformat geht auch ohne WITH:

Selection.NumberFormat = "0.00%"


Bildschirmupdate aus- und einschalten

Um Bildschirmflimmern während der Ausführung zu unterdrücken

Application.ScreenUpdating = False
Anweisung
Application.ScreenUpdating = True


Kopieren und Einfügen von Tabellendaten

Range("A1:D5").Select     'Zellenbereich auswählen
Selection.Copy            'Auswahl kopieren
Sheets("Tabelle2").Select 'Tabellenblatt zum einfügen auswählen
Range("A1").Select        'linker - oberer Rand für das Einfügen auswählen
ActiveSheet.Paste         'einfügen


Wichtige Befehle:


UserForm

Die VBA Programmierung in Excel ermöglicht auch das Anlegen eines VBA Formulars, mit dem Daten benutzerfreundlicher in eine Exceltabelle übermittelt werden können.
Dazu muss man im VB Editor - bei VBAProjekt (linke Box) - rechte Maustaste - Einfügen - UserForm klicken und es erscheint eine graphische Benutzeroberfläche. Mittels Steuerelemente lassen sich nun Formulare entwickeln.

Beispiel: