Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Funktuion Summe auffüllen erweitern

VBA Funktuion Summe auffüllen erweitern
25.10.2018 10:17:55
Jarek
Hallo zusammen,
ich verfolgende schon länger Einträge hier im forum und konnte schon sehr oft mir mit den gefundenen Infos weiterhelfen, aber jetzt stehe ich vor einem Problem, welches mich in den Wahnsinn treibt. Ich hoffe, dass mir jemand helfen kann.
Ich habe bei mir in der Firma einige Excel Makros von meinem Vorgänger übernommen und versuche stellenweise Fehler auszubessern, bzw. zu optimieren.
Mein Problem gestaltet sich wie folgt:
In einer Userform wird eine Summe in eine Textbox eingetragen. diese Summe ist immer in den tausender Bereichen, manchmal aber auch im Millionenbereich.
Damit die Eingabe flotter geht, habe ich in dem code eine Funktion die angesprungen wird um die Summe in der Textbox mit 1.000 zu multiplizieren.
Der Code sieht so aus:

Function SummeAuffüllen(ByVal AbZeichen As Integer, ByVal Summe) As Variant
If IsNumeric(Summe) Then
If Len(Summe) = AbZeichen Then
Summe = Summe * 1000
SummeAuffüllen = Format(CDbl(Summe), "#,###,###")
End If
SummeAuffüllen = Format(CDbl(Summe), "#,###,###")
Else
SummeAuffüllen = ""
End If
End Function

Der Aufruf zur Funktion gestaltet sich dann so:

Private Sub txtSumme_Change()
txtSumme.Value = SummeAuffüllen(3, txtSumme.Value)
End Sub

Das "Problem" das ich an dieser Stelle habe ist, dass der Cursor in der Textbox dann ans ende springt. Will man jetzt eine Zahl im Millionenbereich eingeben wird die Eingabe hinten fortgesetzt.
Sprich aus 1.234.000 wird 1.230.004, weil nach der dritten Zahl die Multiplikation vorgenommen wird.
Mein erster Versuch das zu beheben war die Ergänzung im Aufruf der Funktion --> Private Sub _
txtSumme_Change() um diesen Code-Schnipsel:

If Len(Me!txtSumme) > 5 Then
Me!txtSumme.SelStart = Len(Me!txtSumme) - 3
End If

das bewirkt jedoch, dass ich nach jeder Eingabe auf die Tausenderstelle springe, selbst wenn ich dcoh etwas im Einstelligen Bereich eingeben will
Kann dieser schnipsel irgendwie in die Funktion SummeAuffüllen eingabaut werden, so dass nur wen die Funktion ausgeführt wird, der Cursor einmalig um 3 Stellen nach links verschoben wird? Hintergrund ist, dass die Funktion für mehrere TextBoxen verwendet wird.
Vielen Dank vorab!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Funktuion Summe auffüllen erweitern
25.10.2018 10:26:17
Daniel
Hi
nicht im Change-Event, sondern im Exit- oder AfterUpdate-Event.
dann wird die Umwandlung erst ausgeführt, wenn die Eingabe fertig ist.
Gruß Daniel
AW: VBA Funktuion Summe auffüllen erweitern
25.10.2018 11:01:19
Jarek
Danke für den Hinweis!
Das ist natürlich auch eine mögliche Lösung, aber dann sieht der Mitarbeiter nicht sofort, dass die Auffülung vorgenommen wird.
Dann wird der unwissende Mitarbeiter die volle Summe selbständig eingeben.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige