Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1744to1748
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
in UserForm - in TextBox addieren
05.03.2020 15:31:14
Michael
Hallo liebes Forum,
ich habe ein Userform angelegt in welche verschiedene Werte eingegeben werden.
Die Eingabe erfolgt über ComboBoxen. Bevor ich zu meinem Button springe und alle Werte in eine Zeile Meines Arbeitsblattes schreibe möchte ich eine TextBox1 haben welche sobald ich eine Zahl eingebe und ENTER drücke diese in TextBox2 einträgt und TextBox1 leert. Gebe ich nun die nächste Zahl in TextBox1 ein wird dieser zur TextBox2 addiert. Mit meiner TAB Taste möchte ich zum nächsten Feld springen können.
Folgenden Code hatte ich schon einmal genutzt:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B3").Address Then
Target.Offset(-1, 0) = Target.Offset(-1, 0) + Target
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End Sub

Dieser müsste quasi auf mein TextBox in meinem Userform angewandt werden können.
Ich würde mich um Unterstützung freuen.
Vielen Dank
Michael

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in UserForm - in TextBox addieren
05.03.2020 16:20:07
fcs
Hallo Miachael,
hier kann man mit dem Exit-Ereignis der Textbox abarbeiten.
Wenn man die Textbox1 verläßt (z.B. per Tab oder Maus) wird die Aktion ausgeführt.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
If .Value = "" Then
ElseIf IsNumeric(.Value) Then
If TextBox2.Value = "" Then
TextBox2 = .Value
Else
TextBox2 = CDbl(TextBox2.Value) + CDbl(.Value)
End If
Else
MsgBox "Eingabe in Textbox1 muss nummerisch sein!", _
vbOKOnly + vbInformation, "prüfung Eingabe in Textbox1"
Cancel = True
End If
End With
End Sub
LG
Franz
Anzeige
AW: in UserForm - in TextBox addieren
06.03.2020 07:28:23
Michael
GENIAL!
Guten Morgen!
Bekommt man es noch hin, dass nachdem ich einen Wert mit der Entertaste in die Textbox2 geschrieben habe, er automatisch Textbox1 leert und den Cursor wieder in die Textbox1 plaziert? Damit man sofort eine weitere Zahl addieren. Dsa wäre vom Handling besser.
Erst wenn ich mit dem Tabulator aus Textbox1 springe addiert er noch den letzten eingegebenen Wert von Textbox1 in die Textbox2 und springt zum nächsten Feld.
VG
Michael
AW: in UserForm - in TextBox addieren
06.03.2020 11:05:48
fcs
Hallo Michael,
habe noch etwas getüfftelt.
Du kannst die Eingabe in der Textbox mit TAB oder ENTER abschliessen. Der Effekt ist der gleiche.
Steht in der Textbox1 eine Zahl, dann wird beim Verlassen der Textbox1 die Zahl zum Wert in Textbox2 addiert und Textbox1 geleert - der Fokus bleibt auf Textbox1. Ist Textbox1 leer, dann wird der letzte Eingabewert wieder eingetragen und zum nächsten Steuerelement gesprungen.
Ich hab zusätzlich eine Prüfung der Tastatureingaben eingebaut, so dass in Textbox1 nur Ziffern, "," und "." eingegeben werden können.
Damit der Fokus beim Verlassen nicht auf Textbox2 gesetzt wird änderst du für Textbox2 am besten die Eigenschaft "TabIndex" auf einen hohen Wert.
LG
Franz
'Code im Modul des Userforms
Option Explicit
'Deklaration der modulweite Variablen
Private mstrTextbox1 As String 'merker für letzten Eingabewert
'### Ereignismakros Textbox1 ###
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
If .Value = "" Then
'letzten Eingabewert wieder eintragen
.Value = mstrTextbox1
Else
mstrTextbox1 = .Value 'Eingabewert merken
If TextBox2.Value = "" Then
TextBox2 = CDbl(.Value)
Else
TextBox2 = CDbl(TextBox2.Value) + CDbl(.Value)
End If
.Value = ""
Cancel = True 'Dadurch bleibt der Fokus auf der Textbox
End If
End With
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Nur Eingaben für Zahlenwerte zulassen
With Application
Select Case KeyAscii
Case Asc(0) To Asc(9), Asc(.ThousandsSeparator), Asc(.DecimalSeparator)
'zulässige eingaben für Zahlen
If Not IsNumeric(TextBox1.Value & ChrW$(KeyAscii)) Then KeyAscii = 0
Case Else
'bei allen andern anzeigbaren ASCII-Zeichen
KeyAscii = 0
End Select
End With
End Sub

Anzeige
AW: in UserForm - in TextBox addieren
06.03.2020 11:41:47
Michael
sehr gut, jetzt funktioniert alles!
Vielen Dank!

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige