## Erstellen eines VBA-Skripts ### Funktionsdeklaration Anfang ```vba 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. ```vba 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** ```vba Summe = 0 Anzahl = 0 ``` - `Summe` und `Anzahl` werden auf 0 initialisiert. ### Schleife durch den Bereich durch For Each und Next ```vba 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 ```vba 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 ```vba 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. |