Excel VBA - Funktionen

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Eigene Funktionen (Benutzerdefinierte)

  • Alle benutzerdefinierte Funktionen sind mit Funktionsassistent verfügbar. Alle benutzerdefinierten Funktionen stehen unter der Ruprik "Benutzerdefiniert".
  • trägt man "=<namen>", so sind alle eigene Funktionen zugänglich

Funktionen mit Parametern

Function FunktionMitParameter(r As String)
  FunktionMitParameter = r + 1
End Function

In Excel Eingabe in einer Zelle

=FunktionMitParameter(4)  'Resultat = 5


Funktionen mit mehreren Parametern

Function FunktionMitMehrerenParameter(r As String, s As String)
  FunktionMitParameter = r + 1 + s
End Function

In Excel Eingabe in einer Zelle

=FunktionMitParameter(1;2)  'Resultat = 4

Beispiele

Ersetzen Wert

Eine Funktion mit Übergabe einer Inputvariablen.

'Held S. 216.
Function Benotung(r)
 Application.Volatile.   'Aktualisiert den Outputwert automatisch

  Select Case r.Value
    Case Is = 1: Benotung = "Sehr gut"
    Case Is = 2: Benotung = "gut"
    Case Is = 3: Benotung = "Befriedigend"
    Case Is = 4: Benotung = "Ausreichend"
  End Select
End Function

Nun in Excel in Zelle A1 die Zahl 1 eingeben. Nun strg gedrückt halten und die Ausfüllkästchen bis in Zelle A6 ziehen. Nun einen Doppelklick auf dsa Ausfüllkästchen B1, um die Funktion nach unten auszufüllen.

Funktion Arbeitsmappe (Datei)

Function Arbeitsmappe()
  Arbeitsmappe = ActiveWorkbook.Name 'Aktuelle Datei
End Function

Unter "Benutzerdefinierte Funktionen" steht nun die Funktion "Arbeitsmappe" zur Verfügung.

In eine Zelle in Excel kann der Befehl geschrieben werden

=Arbeitsmappe()

Funktion Aktives Tabellenblatt ermitteln

Function TabellenName() As String
  TabellenName = Application.Caller.Parent.Name
End Function

In eine Zelle kann der Befehl geschrieben werden

=TabellenName()

Funktion Aktuellen Bearbeiter identifizieren

Es kann interessant sein, wenn eine Excel-Datei gesperrt ist.

Function Anwender()
  Anwender = Application.UserName
End Function

Eingebaute Funktionen

Aktives Tabellenblatt

Arbeitsmappe = ActiveWorkbook.Name

Zeit & Datum

Dim Datum as Date
Datum = date
'Ermittlung von Tag, Monat und Jahr, sowie Sekunde, Minute und Stunde aus dem aktuellen Tag und Uhrzeit (Now)
Dim MonatNr as Integer
Dim TagNr as Integer
Dim JahrNr as Integer

Dim StundeNr as Integer
Dim MinuteNr as Integer
Dim SekundeNr as Integer

MonatNr = Month(Now())
TagNr = Day(Now())
JahrNr = Year(Now())
 
StundeNr = Hour(Now())
MinuteNr = Minute(Now())
SekundeNr = Second(Now())
'Listing 1.10: Das aktuelle Tagesdatum unterschiedlich darstellen
'Held, S. 54
Sub DatumsformateBearbeiten() 
  DatAngabe = Now 
  Debug.Print FormatDateTime(DatAngabe, vbGeneralDate) 
  Debug.Print FormatDateTime(DatAngabe, vbLongDate) 
  Debug.Print FormatDateTime(DatAngabe, vbShortDate) 
  Debug.Print FormatDateTime(DatAngabe, vbLongTime) 
  Debug.Print FormatDateTime(DatAngabe, vbShortTime) 
End Sub

VBAFormatDateTime1.jpg