Erstellen eines VBA-Skripts

Funktionsdeklaration

Anfang

Function DurchschnittBerechnen(Bereich As Range) As Double
...
End Function

  • Diese Zeile deklariert eine Funktion namens DurchschnittBerechnen, die einen Bereich (Range) als Eingabe nimmt und einen Double-Wert zurückgibt.
  • End Function beendet die Funktion -Range: Objekt, das eine Zelle oder einen Zellbereich in einem Arbeitsblatt darstellt
  • Im Beispiel: Bereich als Range deklariert - Funktion erwartet einen Zellbereich als Eingabe

Variablendeklaration mit Dim und Initialisierung

Variablendeklaration

  • Dim steht für “Dimension” und wird verwendet, um Variablen zu deklarieren. Es teilt VBA mit, dass eine neue Variable erstellt wird, und definiert ihren Datentyp.

Dim Zelle As Range
Dim Summe As Double
Dim Anzahl As Integer

  • Zelle wird als Range deklariert und dient als Schleifenvariable, um durch jede Zelle im Bereich zu iterieren.
  • Summe wird als Double deklariert, um die Summe der numerischen Werte zu speichern.
  • Anzahl wird als Integer deklariert, um die Anzahl der numerischen Zellen zu zählen.

Initialisierung

Summe = 0
Anzahl = 0

  • Summe und Anzahl werden auf 0 initialisiert.

Schleife durch den Bereich durch For Each und Next

For Each Zelle In Bereich
    If IsNumeric(Zelle.Value) Then
        Summe = Summe + Zelle.Value
        Anzahl = Anzahl + 1
    End If
Next Zelle

  • For Each startet Schleife, die durch jedes Element in einer Sammlung (z.B. einem Zellbereich) iteriert.
  • For Each Zelle In Bereich: Diese Zeile startet eine Schleife, die jede Zelle im Bereich durchläuft.
  • Next Zelle: Diese Zeile markiert das Ende der Schleife und weist VBA an, zur nächsten Zelle überzugehen.

Berechnung des Durchschnitts

If Anzahl > 0 Then
    DurchschnittBerechnen = Summe / Anzahl
Else
    DurchschnittBerechnen = 0
End If

  • Wenn die Anzahl der numerischen Zellen größer als 0 ist, wird der Durchschnitt berechnet, indem die Summe durch die Anzahl geteilt wird.
  • Wenn keine numerischen Zellen gefunden wurden, wird der Durchschnitt auf 0 gesetzt.

Code

Function DurchschnittBerechnen(Bereich As Range) As Double
    Dim Zelle As Range
    Dim Summe As Double
    Dim Anzahl As Integer
 
    Summe = 0
    Anzahl = 0
 
    For Each Zelle In Bereich
        If IsNumeric(Zelle.Value) Then
            Summe = Summe + Zelle.Value
            Anzahl = Anzahl + 1
        End If
    Next Zelle
 
    If Anzahl > 0 Then
        DurchschnittBerechnen = Summe / Anzahl
    Else
        DurchschnittBerechnen = 0
    End If
End Function

Datentypen in VBA

Datentyp Beschreibung Speicherbedarf Wertebereich
Integer Ganzzahl 2 Bytes -32.768 bis 32.767
Long Lange Ganzzahl 4 Bytes -2.147.483.648 bis 2.147.483.647
Single Gleitkommazahl (einfache Genauigkeit) 4 Bytes -3,402823E38 bis -1,401298E-45 für negative Werte; 1,401298E-45 bis 3,402823E38 für positive Werte
Double Gleitkommazahl (doppelte Genauigkeit) 8 Bytes -1,79769313486232E308 bis -4,94065645841247E-324 für negative Werte; 4,94065645841247E-324 bis 1,79769313486232E308 für positive Werte
Currency Währung (festes Dezimalformat) 8 Bytes -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
String Zeichenkette (variable Länge) 1 Byte pro Zeichen Bis zu etwa 2 Milliarden Zeichen
Boolean Boolescher Wert (Wahr/Falsch) 2 Bytes True oder False
Date Datum und Uhrzeit 8 Bytes 1. Januar 100 bis 31. Dezember 9999
Object Objektverweis 4 Bytes Jedes Objekt
Variant Variabler Datentyp (kann jeden Datentyp enthalten) Variabel Abhängig vom enthaltenen Datentyp
Byte Ganzzahl (nur positive Werte) 1 Byte 0 bis 255

Type-Checking-Functions (Typüberprüfungsfunktionen) in VBA

Hier ist eine Tabelle mit den Funktionen in VBA, die verwendet werden, um verschiedene Bedingungen zu überprüfen:

Funktion Beschreibung
IsNumeric Überprüft, ob ein Ausdruck als Zahl interpretiert werden kann.
IsDate Überprüft, ob ein Ausdruck als Datum interpretiert werden kann.
IsEmpty Überprüft, ob eine Variable initialisiert wurde.
IsNull Überprüft, ob ein Ausdruck keine gültigen Daten enthält.
IsError Überprüft, ob ein Ausdruck ein Fehlerwert ist.
IsArray Überprüft, ob eine Variable ein Array ist.
IsObject Überprüft, ob eine Variable auf ein Objekt verweist.
TypeName Gibt einen String zurück, der den Datentyp einer Variablen beschreibt.
VarType Gibt eine ganze Zahl zurück, die den Datentyp einer Variablen angibt.