Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1036to1040
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

Uebergabe von Textbox

Uebergabe von Textbox
04.01.2009 18:46:00
Textbox
Hallo Zusammen
Habe zwei Fragen. Textbox in einer UF
1. Wie kann ich bei Uebergabe von der Textbox zum Tabellenblatt erreichen, daß der Wert als Zahl und nicht als Text übergeben wird. Muss danach weiter arbeiten mit dieser Zahl im Tabellenblatt.
2. Wie kann ich erreichen, daß nur numerische Werte also Euro 12'000.50 eingegeben werden können und auch so auf dem Blatt übertragen wird.
Für Eure Hilfe wäre ich froh, bin am verzweifeln.
Gruß
Steve

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Uebergabe von Textbox
04.01.2009 19:09:00
Textbox
Hallo Steve,
zu 1 durch Umwandlungsfunktionen z.B. Cdbl(Textbox1)
Zu 2 formatiere die Zelle entsprechend.

multipliziere mit 1 und prüfe if IsNumeric...
04.01.2009 19:12:00
Matthias
Hallo
1.) multipliziere mit 1
2.) prüfe mit If IsNumeric(TextBox) Then ...
Gruß Matthias
AW: Uebergabe von Textbox
04.01.2009 19:17:15
Textbox
Hallo
1. Multipliziere den Inhalt mit 1
Range("A1") = Me.Textbox1.Text * 1
Dazu muss aber der Inhalt numerisch sein.
ACHTUNG:
Kommas sind nicht erlaubt, die müssen umgewandelt werden in einen Punkt.
VBA kennt keine Kommas in Zahlen
2. Das wäre eine Variante.
Den Code in der Textbox hinterlegen
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 48 To 57
        Case 44
            KeyAscii = 46
        Case Else
            MsgBox "Das: """ & KeyAscii & """ ist ein nicht erlaubtes Zeichen" & vbCrLf, vbCritical + vbOKOnly, "Fehler"
            'Eingabe zurücksetzen
            KeyAscii = 0
    End Select
End Sub

Kommas werden automatisch in einen Punkt umgewandelt
Gruss Rainer
Anzeige
AW: Uebergabe von Textbox
04.01.2009 19:18:00
Textbox
Moin Steve!
Etwas weiter vorne (...oder unten, je nachdem wie mans sieht) war bereits so eine ähnlich Frage.
Guckst Du hier:
https://www.herber.de/forum/messages/1036668.html
Wenn Du einen nummerischen Wert übergeben willst, dann musst Du in dem betreffenden VBA Code der die Werte übergibt eine Änderung vornehmen. Zum Beispiel so:
.Cells(lz, 2) = CDbl(TextBox1.Text)
Dein Problem, dass nur Zahlen in eine TextBox eingegeben werden können, habe ich mal über den ASCII-Code gelöst (...hier in meinem Beispiel beziehe ich mich aber auf Buchstaben):

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'nur Buchstaben in der  _
TextBox1 zulassen
Select Case KeyAscii
Case 32, 39, 45, 65 To 90, 97 To 122, 196, 214, 220, 223, 228, 246, 252
Case Else
KeyAscii = 0
MsgBox "Der Name darf keine Zahlen enthalten!" & Chr(13) & "Es sind nur Buchstaben  _
erlaubt!", 64, "Nachname"
End Select
End Sub


...die Zahlen in dem Code definieren die Zeichen, die eingegeben werden dürfen. In meinem Beispiel bezieht es sich auf Buchstaben. Diesen Code mußt Du übrigens in das VBA-Skribt des UserForms integrieren.
Um die Codezahlen zu finden, die Du für Deine Vorstellungen brauchst guckst Du hier:
http://de.wikipedia.org/wiki/ASCII-Code ...oder...
http://www.calo.de/lhtml_z.htm
...und wegen dem "ß" noch mal hier http://de.wikipedia.org/wiki/%C3%9F
Hoffe, Dir ein wenig geholfen zu haben!
Viele Grüße aus dem hohen Norden!
Lenni

Anzeige
AW: Uebergabe von Textbox
04.01.2009 19:25:00
Textbox
Hallo,
zu erstens

Range("A1") = CDbl(TextBox1)


Zu zweitens


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789,", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub


Gruß Tino

AW: Uebergabe von Textbox
04.01.2009 20:30:00
Textbox
Hallo
Habe die Variante von Tino genommen. Sie funktioniert bestens.
Wie kann ich die Textbox dazu bringen, daß auch Pfennige eingegeben werden können?
Die Zahl 12560 geht aber die Zahl 12560.25 kann ich nicht eingeben. Bekomme kein Punkt in der Textbox.
D.H. wenn ich die Zahl 12560.25 so eingeben will kann ich kein Punkt setzen.
Gruß
Steve
Anzeige
AW: Uebergabe von Textbox
04.01.2009 20:40:18
Textbox
Hi Steve,

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If InStr("0123456789,.", Chr$(KeyAscii)) = 0 Then KeyAscii = 0
End Sub


Gruß
Reinhard

AW: Uebergabe von Textbox
04.01.2009 21:03:48
Textbox
Hallo,
verwende einfach das Komma, CDbl kommt damit zurecht.
Gruß Tino
AW: Uebergabe von Textbox
04.01.2009 22:21:00
Textbox
Hallo Tino
Ich weiss ja nicht wie das mit dem deutschen EXCEL ist,... bei allen anderen Versionen funktioniert dies
Sub test()
    Dim x
    x = "1,25"
    Range("a1") = CDbl(x) * 5
End Sub

auf jeden Fall nicht
Gruss Rainer
Anzeige
AW: Uebergabe von Textbox
04.01.2009 22:24:00
Textbox
Hallo Rainer,
in der Deutschen Version schon. Vielleicht solltest Du X als z.B. Single definieren, jetzt ist es ja Variant.
Gruß Hajo
AW: Uebergabe von Textbox
04.01.2009 22:32:07
Textbox
Hallo Hajo
Ja, Variant, aber es wird ein String übergeben.
Also der gleiche Zustand wie in einer Textbox. Da sollte doch CDbl dann zurechtkommen.
Wenn du das Komma gegen einen Punkt ersetzt, funktioniert es nämlich
Gruss Rainer
OT Nachfrage
04.01.2009 22:26:39
Reinhard
Hallo Rainer,
verwirre mich bitte nicht :-)
Du hast alle anderen Exlversionen außer der deutschen Version?
In der deutschen Version funktiert dein Code mit Komma und mit Punkt.
Gruß
Reinhard
Anzeige
AW: OT Nachfrage
04.01.2009 22:37:31
Ramses
Hallo
Ich habe eine Deutsche Version, aber als Ländereinstellung natürlich die Schweizer Ländereinstellung.
Allerdings funktioniert das Beispiel in der englischen Version XP/2003 und in der französischen Version XP/2003 ebenfalls nicht.
Dort wird in VBA ausschliesslich der Punkt als Dezimaltrennzeichen verwendet und das Beispiel läuft in einen Laufzeitfehler
Userbild
Daher meine Codevariante, wo das Komma automatisch gegen einen Punkt ersetzt wird
Gruss Rainer
AW: OT Nachfrage
04.01.2009 23:01:03
Reinhard
Grüezi Rainer,
danke für die Aufklärung.
Gruß
Reinhard
Anzeige
AW: Uebergabe von Textbox
04.01.2009 22:41:00
Textbox
Hallo
"...ich habe die deutsche und bei dieser kommt mit Punkt kein Komma raus. ;-)..."
Meinst du :-)
Userbild
Es tut manchmal gut, über den Tellerrand hinauszuschauen :-)
Gruss Rainer
AW: Uebergabe von Textbox
04.01.2009 22:50:00
Textbox
Hallo,
ich kenne Dein Excel nicht, habe jetzt aber mal die Ländereinstellung geändert.
Fehler kommt schon mal keiner.
Ist der Punkt das Dezimaltrennzeichen,
wird bei Eingabe eines Kommas dieses nicht geschrieben.
Aus 125,6 wird 1256
Bei deutscher Einstellung ist es genau umgekehrt.
Aus 125.6 wird 1256
Gruß Tino
Anzeige
AW: Uebergabe von Textbox
04.01.2009 23:00:28
Textbox
Hallo
ich habe eine normale deutschsprachige EXCEL Version XP/2003
Ländereinstellung Schweiz
Keyboard-Layout Schweiz
Dezimaltrennzeichen = Punkt
Und schon klapperts. Deutschland, und ich glaube Österreich, sind die einzigen Länder die das Komma als Dezimaltrennzeichen verwenden. Daher gibt es hier auch immer die meisten Probleme, z.B. speziell mit CSV Dateien öffnen und speichern usw.
Um in der Textbox also Fehleingaben zu vermeiden, verwende ich daher immer mein Codebeispiel indem das Komma automatisch ersetzt wird. Denn der Punkt als Dezimaltrennzeichen wird von VBA grundsätzlich verstanden.
Gruss Rainer
Anzeige
AW: Uebergabe von Textbox
04.01.2009 23:13:00
Textbox
Hallo,
ich kann machen was ich will, aber Deinen Laufzeitfehler bekomme ich nicht hin.
Egal, Steve kann sich nun ja dass richtige für sich raussuchen.
Gruß Tino
AW: Uebergabe von Textbox
05.01.2009 11:53:00
Textbox
Hallo,
muss mich leider nochmal melden,
Deine Version funktioniert bei mir genau so wenig wie meine bei Dir.
Wenn ich bei Deiner z. Bsp. 0,5 eingebe wird daraus 0.5 in der TextBox.
Schreibe ich nun über einen Commandbutton die 0.5 Multipliziert mit 1 in eine Zelle,
steht in der Zelle 5.
Also ich komme zu der Schlussfolge, dass es Länderspezifik angepasst werden muss ob man Punkt oder Komma verwendet.
Hat jetzt aber nichts mit den Normalen Zahlen in VBA zu tun,
geht nur um die Verwendung in einer TextBox.
In VBA kann ich auch nur Punkt verwenden.
Range("A1") = 0.5 + 0.5
Gruß Tino
Anzeige
AW: Uebergabe von Textbox
05.01.2009 12:58:34
Textbox
Hallo Tino
Das würde mich aber nun schon interessieren, warum er die Multiplikation bei dir abschaltet bzw. nur eine Ganzzahl bringt.
Setz doch einfach mal eine MsgBox davor, nur um Zellformatierungen auszuschliessen

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case 44
KeyAscii = 46
Case Else
MsgBox "Das: """ & KeyAscii & """ ist ein nicht erlaubtes Zeichen" & vbCrLf,  _
vbCritical + vbOKOnly, "Fehler"
'Eingabe zurücksetzen
KeyAscii = 0
End Select
End Sub


Und in das Exit Ereignis


Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox CDbl(Me.TextBox1.Value) * 2.5
End Sub


Würde mich interessieren. Bei mir werden die Komma-Werte korrekt umgerechnet
Gruss Rainer

Vba und Punkt und Komma in Zahlen
05.01.2009 13:28:00
Reinhard
Grüezi Rainer,
ich habe deutsches Excel2000 auf Win XP. Die Ländereinstellungen sind so wie nach der Installation.
Bei "Keypress" funktioniert es wie m Code geplant, Komma wird zu Punkt. Punkt ruft die MsgBox auf.
"Exit" wird bei mir nicht ausgelöst wenn ich aus der TextBox in eine Zelle wechsle.
Deshalb nahm ich Worksheet_SelectionChange
Bei Klick auf eine Zele kommt nun Fehler 13, Typen unverträglich, wenn in der TextBox z.B.: .5 steht.
Steht aber in der Zelle 2.5 so wird korrekt gerechnet, Ergebnis 12,5

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox CDbl(Me.TextBox1.Value) * 2.5
End Sub


Gruß
Reinhard

AW: Uebergabe von Textbox
05.01.2009 13:31:47
Textbox
Hallo,
bei eingabe von 0,5 (0.5) kommt 12,5 herraus, entspricht 5*2,5.
Userbild
ändere ich Dein Makro, dass ich Komma eingeben kann wird richtig gerechnet.
Userbild
Gruß Tino
alternative
05.01.2009 14:54:28
Tino
Hallo,
somit müsste dass eine alternative sein.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim DezimalZeichen As String
 
DezimalZeichen = Application.DecimalSeparator

If Chr$(KeyAscii) <> DezimalZeichen And Chr$(KeyAscii) = "," Then
 KeyAscii = 46
ElseIf Chr$(KeyAscii) <> DezimalZeichen And Chr$(KeyAscii) = "." Then
 KeyAscii = 44
End If

  
If InStr("0123456789" & DezimalZeichen, Chr$(KeyAscii)) = 0 Then KeyAscii = 0

End Sub


Gruß Tino

Korrektur
05.01.2009 16:34:34
Tino
Hallo,
leider funktioniert der DecimalSeparator auch nicht,
ich war der Meinung, dieser wäre von der Ländereinstellung abhängig, dem ist aber nicht so.
Also wenn "." keinen Fehler bringt,
prüfen wir doch einfach das Ergebnis und stellen dass entsprechende Zeichen ein.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim DezimalZeichen As String

If ("0.5" * 1 <> 0.5) And Chr$(KeyAscii) = "," Then
 KeyAscii = 44
 DezimalZeichen = ","
ElseIf ("0.5" * 1 = 0.5) And Chr$(KeyAscii) = "," Then
 KeyAscii = 46
 DezimalZeichen = "."
End If

  
If InStr("0123456789" & DezimalZeichen, Chr$(KeyAscii)) = 0 Then KeyAscii = 0

End Sub


Gruß Tino

Cool...
05.01.2009 17:46:00
Ramses
Hallo Tino
Das ist eine elegante Variante die alle Varianten abdecken sollte.
Gruss Rainer
AW: Cool...
05.01.2009 18:14:00
Reinhard

Grüezi Rainer,
eine winzige Abdeckng fehlt noch
If InStr(TextBox1.Text, DezimalZeichen) > 0 And Chr$(KeyAscii) = DezimalZeichen Then KeyAscii =  _
0
Gruß
Reinhard


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige