Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1440to1444
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
Inhaltsverzeichnis

In Userform Textfelder summieren / Feld nur Zahlen

In Userform Textfelder summieren / Feld nur Zahlen
14.08.2015 21:33:36
Uwe
Hallo,
ich habe hier gleich mehrere Themen und es war mir leider nicht so etwas im Forum zu finden. Natuerlich gibt es Hinweise auf die Aufgabenstellungen, jedoch konnte ich die nie vernuenftig umsetzen oder ich habe nicht das richtige gefunden.
Um nicht ein riesen Durcheinander im Thread zu machen, habe ich die Tablle leer gelassen und nur das User.Form60 eingefuegt.
https://www.herber.de/bbs/user/99587.xlsm
Das folgende soll mit dem User.Form, bzw. mit dem ExcelSheet passieren:
1.) Beim Klicken in das Feld "D6" das Userform "60" oeffnen ( ist schon in dem File entworfen )
2.) Generell sollte beim anklicken von Feld "D6" das Userform "60" geoeffnet werden und immer eine Eingabe ueber die Tastatur in "D6" verhindert werden / nicht moeglich sein
3.) Beim oeffnen von Userform "60" sollten alle Textfelder mit "0,00" gefuellt sein, es sei denn es wurden Werte in das Userform "60" zuvor eingegeben
4.) Die Eingabe in die Textfelder darf nur im Format "0.000,00" erfolgen
5.) Nach jedem eingegebenen Wert in die Felder "Hotelrechnung 1" - "Hotelrechnung 7" wird das Feld "Summe" im Userform "60" neu berechnet
6.) Beim druecken von "Summe in Reisekostenabrechnung uebernehmen", wird der Wert der "Summe" in das Feld "D6" uebernommen und anschliessend das Feld "D7" markiert,
da eine direkte Eingabe in "D6" ja nicht moeglich ist
7.) Das automatische Ruecksetzen der Textfelder auf "0,00" im Userform "60" erfolgt ausschliesslich beim oeffnen der Datei
Ich weiß, das das ganze schon fast eine Programmieraufgabe ist und nicht nur eine Frage zu einer einzelnen Umsetzung. Aber vielleicht hat ja doch jemand die Muse das am Wochenende einmal umzusetzen.
Vielen Dank fuer eure Muehen und Guten Start ins Wochenende,
Uwe

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 05:58:39
Uwe
Hallo und guten Morgen,
habe jetzt die ganze Nacht rumgebastelt und es nimmt so langsam Formen an.
Hier jetzt einmal der aktuelle Stand:
https://www.herber.de/bbs/user/99588.xlsm
Es gibt noch folgende kleine Probleme:
1.) Wenn ich z.B. in ein Textfeld "8.12" eingebe, dann wird danach daraus "812".
In den Textfeldern sollten nur die Ziffern "0-9" und "Komma" zugelassen sein, dargestelt wird es beim verlassen des Feldes jedoch immer als "#.###,##"
2.) Wie ist automatisch beim aufrufen des Userforms das Textfeld1 markiert, so als wenn man mit einem "TAB" reingesprungen waere, um direkt eine Eingabe machen zu koennen ohne mit der Maus in das Feld gehen zu muessen ?
3.) In dem Summenfeld werden die mit "," eingegebenen Werte nicht richtig berechnet, sondern immer nur ganze Zahlen
Habt ihr hier vielleicht einen Tip, bzw. koennt den File entsprechend anpassen ?
Guten Start in den morgen und liebe Gruesse aus Shanghai,
Uwe

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 05:59:31
Uwe
Hallo und guten Morgen,
habe jetzt die ganze Nacht rumgebastelt und es nimmt so langsam Formen an.
Hier jetzt einmal der aktuelle Stand:
https://www.herber.de/bbs/user/99588.xlsm
Es gibt noch folgende kleine Probleme:
1.) Wenn ich z.B. in ein Textfeld "8.12" eingebe, dann wird danach daraus "812".
In den Textfeldern sollten nur die Ziffern "0-9" und "Komma" zugelassen sein, dargestelt wird es beim verlassen des Feldes jedoch immer als "#.###,##"
2.) Wie ist automatisch beim aufrufen des Userforms das Textfeld1 markiert, so als wenn man mit einem "TAB" reingesprungen waere, um direkt eine Eingabe machen zu koennen ohne mit der Maus in das Feld gehen zu muessen ?
3.) In dem Summenfeld werden die mit "," eingegebenen Werte nicht richtig berechnet, sondern immer nur ganze Zahlen
Habt ihr hier vielleicht einen Tip, bzw. koennt den File entsprechend anpassen ?
Guten Start in den morgen und liebe Gruesse aus Shanghai,
Uwe

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 09:49:21
Daniel
Hi
VAL verwendet das englische Zahlenformat mit dem Punkt als Dezimalzeichen.
wenn du ein deutsches Excel hast und mit dem Komma als Dezimalzeichen arbeiten willst, nimm statt VAL die Umwandlungsfunktion CDBL:
TextBox8.Text = CDbl(TextBox1.Text) + CDbl(TextBox2.Text) ...
gleiches auch im Exit-Event der Textboxen:
TextBox3 = Format(CDbl(TextBox3.Text), "#,##0.00")
wenn du nur Zahlen und das Komma als Eingabe zulassen willst, dann muss folgender Code ins KeyPress-Event jeder Textbox:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("9")
Case Asc(",")
If InStr(TextBox1.Text, ",") > 0 Then KeyAscii = 0
Case Else
KeyAscii = 0
End Select
End Sub
Gruß Daniel

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 10:12:52
Uwe
Hallo Daniel,
genial !!! Vielen Dank. Du rettest mir das Wochenende.
Nur noch 2 kleine Sachen, die fuer Dich ein schnapp sein werden.
1.) Schreibe ich z.B. in das "Textfeld1" die Zahl "1812", dann wird Sie nach verlassen des "Textfeldes1" auch richtigerweise als "1.812,00" dargestellt. In dem Summenfeld ( Textfeld8 ) steht jedoch weiterhin "1.812". Wie bekomme ich auch automatisch in das Summenfeld ( Textfeld8 ) das Format "1.812,00"
2.) Wenn der Wert das Summenfeldes ( Textfeld8 ) in das Feld "D6" des Tabellenblattes uebernommen wird, wird es dort als Text "eingeschrieben". Wie kann man den Wert des Summenfeldes in "D6" auch automatisch als Zahl im Format " 1.812,00" schreiben ?
Vielen Dank fuer deine Unterstuetzung,
Uwe

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
16.08.2015 01:32:18
Daniel
HI
du musst in jedem EXIT-Event der Einzeltextboxen das Gesamtergebnis der Summentextbox neu berechnen.
auch hierbei musst du die CDBL-Funktion verwenden, um die Textboxinhalte in Zahlen zu wandeln um sie dann summieren zu können.
auch in die Zelle D6 darfst du nicht einfach den Textboxtext schreiben, sondern musst ihn mit CDBL in die passende Zahl wandeln.
Denn eine Textbox enthält IMMER Text und NIE eine Zahl oder ein Datum.
Gruß Daniel

AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 09:53:50
hary
Moin
Zu 2.
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub

Zu 3.
Nimm statt Val Cdbl
CDbl(TextBox1)

gruss hary

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 10:38:23
Uwe
Hallo Hary,
wir kommen der Sache naeher.
Ich habe den folgenden Code in das UserForm60 kopiert.
Die Zahlen "0,00" werden jedoch nicht wie durch einen "Tabulator" angesprungen komplett "blau" markiert.
Ich muss immer noch mit der Maus ein Doppelklick in das Feld machen um es zu bearbeiten.
Private Sub UserForm60_Initialize()
TextBox1.SetFocus
End Sub
Liegt es vielleicht an den Eigenschaften meines Feldes ?
Danke im voraus,
Uwe

AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 10:44:42
hary
Moin
so.
Private Sub UserForm_Initialize()
With TextBox1
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End Sub

gruss hary

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 10:51:54
Uwe
Hallo Hary,
super, jetzt funktioniert es. Top.
Nur noch 2 kleine Sachen, die du evtl. auch weißt ?
1.) Schreibe ich z.B. in das "Textfeld1" die Zahl "1812", dann wird Sie nach verlassen des "Textfeldes1" auch richtigerweise als "1.812,00" dargestellt. In dem Summenfeld ( Textfeld8 ) steht jedoch weiterhin "1.812". Wie bekomme ich auch automatisch in das Summenfeld ( Textfeld8 ) das Format "1.812,00"
2.) Wenn der Wert das Summenfeldes ( Textfeld8 ) in das Feld "D6" des Tabellenblattes uebernommen wird, wird es dort als Text "eingeschrieben". Wie kann man den Wert des Summenfeldes in "D6" auch automatisch als Zahl im Format " 1.812,00" schreiben ?
Vielen Dank fuer deine Unterstuetzung,
Uwe

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 11:05:55
hary
Moin
Eine textbox gibt immer Text zurueck,also musst du auch mit Cdbl arbeiten.
Range("$D$6")= Format(CDbl(TextBox8), "#,##0.00")

gruss hary

AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 11:42:02
Uwe
Hallo Hary,
ich habe im Code meines Userforms das folgende stehen. ( I Code des Buttons, der das Userform schliesst )
Es erscheint jedoch bei jeder Aktivierung des Feldes "D6" im Sheet selber jedes mal dieses "kleine gelbe Raute mit schwarzem Semikolon" mit dem Hinweis: "The number in this Cell is formatted as text or preceded by any apostrophe". Bekommt man diese Meldung auch noch irgendwie weg ?
Private Sub CommandButton1_Click()
Range("$D$6") = Format(CDbl(TextBox8), "#,##0.00")
Range("$D$7").Select
Me.Hide
End Sub

Anzeige
AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 12:04:00
hary
Moin
Versuch es mal so.
With Range("$D$6")
.NumberFormat = "General"
.Value = Format(CDbl(TextBox8), "#,##0.00")        ' Schreibt den Summenwert in die Zelle D6
End With
Me.Hide

gruss hary

AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 12:16:43
Uwe
Beim eintragen des Wertes in die Zelle, direkt nach dem schliessen des Feldes ist die gelbe Raute verschwunden.
Das Format scheint jedoch immer noch nicht zu stimmen, denn wenn ich in "D7" springe und dann wieder auf "D6", dann ist die gelbe Raute wieder da :-(

AW: In Userform Textfelder summieren / Feld nur Zahlen
15.08.2015 14:07:38
Tino
Hallo,
um nur Zahlen in einer Textbox zuzulassen mache ich es immer so.
Ich verwende das KeyPress Event der Textbox um das Zeichen zu prüfen das eingegeben wurde
zusätzlich prüfe ich den bereits vorhandenen Text der in der Textbox steht.
Dies mache ich mittels einer Funktion um dies nicht für jede Textbox neu zu schreiben.
(Bei sehr vielen sollte man sich über Klassenprogrammierung Gedanken machen,
dass spart sehr viele Codezeilen.)
Beim Eintragen in die Zelle überprüfe ich dann noch ob die Testbox leer ist und
wenn nicht multipliziere ich den Inhalt mit 1.
Beispiel:
Private Sub TextBox1_KeyPress(ByVal intKeyAsc As MSForms.ReturnInteger)
intKeyAsc = OnlyNumbers(TextBox1, CInt(intKeyAsc))
End Sub

'Funktion zum prüfen einer Textbox ---> Nur Zahlen zulassen
Function OnlyNumbers(objTextBox As MSForms.TextBox, intKeyNumber As Integer) As Integer
Dim PunktOderKomma As String
PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
If objTextBox.SelLength = Len(objTextBox) Then objTextBox = ""
If intKeyNumber = 44 Or intKeyNumber = 46 Then
If InStr(objTextBox, PunktOderKomma) = 0 And Len(objTextBox) > 0 Then
OnlyNumbers = Asc(PunktOderKomma)
ElseIf Len(objTextBox) = 0 Then
objTextBox.Value = "0"
OnlyNumbers = Asc(PunktOderKomma)
End If
Else
Select Case intKeyNumber
Case 48 To 57: OnlyNumbers = intKeyNumber
Case Else: OnlyNumbers = 0
End Select
End If
End Function
Übertrag in die Zelle zum Bsp. so.
Private Sub UserForm_Terminate()
If TextBox1  "" Then
Range("A2").Value = TextBox1 * 1
Else
Range("A2").Value = Empty
End If
End Sub

Gruß Tino

Anzeige
AW: vielleicht meinst du so
15.08.2015 20:05:09
Uwe
Hallo Tino,
hab jetzt schon 02.00 Uhr in der Nacht und hab mir grad mal deine Datei angeschaut.
Das sieht super aus !
Werde das am Montag mal probieren in meine Welt einzutragen und wuerde dann das Ergebnis noch mal komplett einstellen.
Aber vielleicht brauch ich doch noch mal Hife, deswegen wuerd es mir helfen wenn du Montag vielleicht noch mal in dem Thread vorbei schauen wuerdest.
Noch einmal vielen Dank und schoenes Wochenende,
Uwe

AW: vielleicht meinst du so
16.08.2015 08:36:55
Uwe
Hallo,
Tino. Hab ein wenig rumgespielt. Das sieht super aus.
Es gibt nur 2 Dinge die jetzt nicht mehr funktionieren:
1.)
'

Private Sub UserForm_Initialize()
'  With TextBox1
'   .SetFocus
'   .SelStart = 0
'   .SelLength = Len(.Text)
'  End With
'End Sub
Dieser Code sollte noch irgendwie in die "UserForm_Initialize" mit eingebaut werden, damit direkt die "TextBox1" im "Userform60" markiert ist beim Aufruf.
2.)
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
msg = MsgBox("Bitte Formular nur über die vorgesehene Schaltfläche beenden")
If CloseMode  1 Then
Cancel = 1
End If
End Sub

Dieser Code war vorher noch im Code des "UserForm60" untergebracht. Wenn ich diesen jetzt in dein Skript reinkopiere, laeuft es auf eine Fehlermeldung. Kann man das auch noch einbinden ?
3.) Noch eine kleine Anmerkung die man evtl. aus Kosmetikgruenden auch noch anpassen koennte.
Schreibt man in die "Textfelder 1-7" eine ganze Zahl, wie z.B. "12", dann bleibt diese als "12" stehen und wird nicht zu "12,00". Aber das ist wirklich Spielerei, denn gerechnet wird natuerlich alles richtig.
Ich wuensche einen Guten Start in den Sonntag und liebe Gruesse aus Shanghai,
Uwe

AW: vielleicht meinst du so
16.08.2015 12:17:42
Uwe
Here we go !
Das wars. Einfach genial und super. Vielen vielen Dank !
Ich hoffe das das auch anderen Usern irgendwie hilft. Denn in der Kombination ( ich weiß es gibt Aber-Millionen Anwendungen ) habe ich das definitiv nirgendwo finden koennen.
Einen schoenen Sonntag und noch einmal vielen Dank !
Uwe

AW: vielleicht meinst du so
19.08.2015 11:10:02
Uwe
Hallo Tino,
in dem UserForm steht:
Private Sub UserForm_Terminate()
Erase oTxT
End Sub
Ich denke das ist zum ruecksetzen aller Textfelder im Userform auf "0,00". Richtig ?
Wie rufe ich denn dieses "Ruecksetzen" aus einem anderen Makro heraus auf ?
Ich setze wie folgt einige Zellen in der Arbeitsmappe im "Modul3" auf "0":
Application.ScreenUpdating = False
Sheets("Deutschland").Select
Range("c2").Select
ActiveCell.FormulaR1C1 = "=RAND()*10000"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("c26").Select
ActiveCell.FormulaR1C1 = "0"
Range("A11").Select
Selection.ClearContents
Range("A12").Select
End Sub
Wie muss ich es im Modul3 einbinden, das alle 8 Textfelder des UserForm60 aud "0,00" gesetzt werden ?
Vielen Dank,
Uwe

AW: vielleicht meinst du so
20.08.2015 11:56:33
Tino
Hallo,
Erase ist zum lösche des Datenfeldes.
Versuch es mal so.
Sub FormZuruecksetzen()
Dim i%
With UserForm60
For i = 1 To 7
.Controls("TextBox" & i) = Format(0, "0.00")
Next i
End With
End Sub
Gruß Tino

224 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige