VBA: Code aus einer Sub in eine Funktion auslagern

Hallo,
den nachstehenden Code, der mit dem Exit-Ereignis den eingebenen Betrag in einen Währungsbetrag umwandelt, möchte ich in eine Funktion, nicht auf der Form, sondern in einem Modul „SM“ auslagern:

Bisher:
Private Sub cboGuthaben_Exit(ByVal Cancel As MSForms.ReturnBoolean)
cboGuthaben = Format(cboGuthaben, „###,##0.00“)
End Sub

Versuch:
Public Function Tsd(i) '*** Fügt Tsd.-Punkt und Komma ein ***
Tsd = Format(i, „###,##“)
End Function

Private Sub cboGuthaben_Exit(ByVal Cancel As MSForms.ReturnBoolean)
i = cboGuthaben
i = SM.Tsd(i)
End Sub

Was muss ich ändern?

Danke und Gruß

den nachstehenden Code, der mit dem Exit-Ereignis den
eingebenen Betrag in einen Währungsbetrag umwandelt, möchte
ich in eine Funktion, nicht auf der Form, sondern in einem
Modul „SM“ auslagern:

Was muss ich ändern?

Hallo W,

es ist immer gut option Explicit zu benutzen, dadurch wirst du gezwungen zumindest
Dim i
zu benutzen, obwohl Dim i as String besser wäre.
(Extrax–Optionen–Variablendeklaration erforderlich)

Ansonsten, es funktioniert doch!?

Gruß
Reinhard

Hallo,

Was muss ich ändern?

  1. Du musst nicht angeben in welchem Modul die Funktion liegt.

Also nicht: i = SM.Tsd(i)
sondern nur: i = Tsd(i)

  1. Wichtig ist das der Datentyp der Variable als Variant oder String deklariert wird. Ansonsten klappt das formatieren nicht.

  2. Bei zukünftigen Fragen etwas mehr über das Problem verraten. (Wurde die Funktion nicht gefunden, oder hat sie nicht das gewünschte Ergebnis geliefert?)

Probier mal das Beispiel unten aus!

Function Tsd(i As Variant)

Tsd = Format(i, „###,##“)

End Function

Sub so_gehts()

Dim i As Variant

i = 1000
i = Tsd(i)

MsgBox (i)

End Sub

Danke und Gruß

Bitteschön.

MfG
Stephan

Hallo Reinhard u. Stephan
hier liegt mein Fehler:
Tsd = Format(i, „###,##“)
muss richtig lauten:frowning:i, „###,##0.00“),
denn ich wollte ein Währungsformat mit Nachkommastellen, was ich Euch unterschlagen hatte.
Gruß und Dank
Wilhelm