Wenn und Funktion in VBA

Fuchsei

Mitglied
Servus alle miteinander!

Ich habe folgendes Problem:

Ich möchte gern eine verschachtelte Wenn-Funktion in VBA formulieren. Ist das möglich, wenn ja wie?

=WENN(MeinFeld<1400;"KB";WENN(UND(MeinFeld>=1400;MeinFeld<3000);"PKB";"VMB"))

Danke schon mal im voraus.

Fuchsei:D
 
Was du da hast ist aber kein VBA, sondern das unlesbare Excel-Feld-Berechnung.
Grundsätzlich ist swas möglich.
Was geht denn bei deiner Formel nicht?

Wenn du daraus aber eine VBA-Funktion machen willst, dann könnte das so aussehen
Visual Basic:
Public Function myFunction(ByVal value As Long) As String
    Const C_MIN = 1400
    Const C_MAX = 3000
    Const C_PKB_TEXT = "PKB"
    Const C_VMB_TEXT = "VMB"
    Const C_KB_TEXT = "KB"
    
    myFunction = IIf(value < C_MIN, C_KB_TEXT, IIf(value >= C_MIN And value < C_MAX, C_PKB_TEXT, C_VMB_TEXT))
End Function

Oder aber das ganze umbauen und vom verschachtelten IF wegkommen
Visual Basic:
Public Function myFunction(ByVal value As Long) As String
    Const C_MIN = 1400
    Const C_MAX = 3000
    Const C_PKB_TEXT = "PKB"
    Const C_VMB_TEXT = "VMB"
    Const C_KB_TEXT = "KB"
    
    Select Case value
        Case Is < C_MIN:            myFunction = C_KB_TEXT
        Case C_MIN To C_MAX - 1:    myFunction = C_PKB_TEXT
        Case Else:                  myFunction = C_VMB_TEXT
    End Select

End Function

Ich finde die 2te Variante einiges Schöner und übersichtlicher

Achja, du kannst natürlich auch direkt mit den Werten arbeiten, ohne die Konstanten. Ist dann aber nicht mehr so Pflegeleicht und lesbar

Im Excel kannst du es dann so aufrufen:
Code:
=myFunction(A1)
 
Danke dir für die Hilfe.
Ja schon klar das war einfach eine Excel_Funktion, die ich übersetzten wollte. Hat alles funktioniert hab mich für die zweite Variante entschieden.

Fuchsei:D
 
Zurück