Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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
Nur Zahlen zulassen
Frank
Hallo an Alle,
ich weiß das Thema wurde schon oft besprochen (in einer Textbox bzw. vielen Textboxen nur Zahlen zulassen) und ich habe auch einen entsprechenden Beitrag gefunden, den ich versucht habe umzusetzen. Aber iregndwie will es noch nicht ganz klappen. Kann mal bitte jemand schauen, was ich in meinem UserFormCode falsch mache?
Das steht in der UserForm1:
Option Explicit
Dim objTbx(1 To 5) As New Klasse1

Private Sub UserForm_Activate()
'Textboxen initialisieren
Set objTbx(1).myTxtBox = TextBox1
Set objTbx(2).myTxtBox = TextBox2
Set objTbx(3).myTxtBox = TextBox3
Set objTbx(4).myTxtBox = TextBox4
Set objTbx(5).myTxtBox = TextBox5
End Sub
Und das in der Klasse1:
Option Explicit
Public WithEvents myTxtBox As MSForms.TextBox

Private Sub myTxtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 44, 46
Case Else: KeyAscii = 0
End Select
End Sub
In diesem Zusammenhang habe ich noch eine Frage bzw. dessen Umsetzbarkeit. Kann ich nur ein Komma bzw. einen Punkt pro TextBox zulassen?
Ich hoffe es kann mir jemand helden.
Vielen Dank und viele Grüße,
Frank

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Nur Zahlen zulassen
13.10.2011 16:46:21
Daniel
Hi
im Prinzip so:

Case Asc("."): if Instr(myTxtBox.Text, ".") > 0 Then KeyAscii = 0

Gruß, Daniel
AW: Nur Zahlen zulassen
14.10.2011 08:50:04
Frank
Hallo Daniel und vielen Dank für deine Antwort, das hilft schon mal weiter.
Jedoch besteht das Hauptproblem ja noch immer, dass irgendwas im Code falsch ist. Könnte sich bitte jemand die Datei anschauen. Ich habe sie in den Anhang gelegt.
https://www.herber.de/bbs/user/77002.xls
Viele Grüße
Frank
AW: Nur Zahlen zulassen
14.10.2011 10:26:06
Frank
Hallo Tino,

toll das funktioniert ja super, auch das man nur ein Komma eingeben kann TOLL :o) :o). Vielen Dank dafür. Ich verstehe das irgendwie nur zum Teil, da ich Anfänger bin und nie zuvor mit einer Klasse gearbeitet habe. Könntest du das Zusammenwirken bitte etwas erklären?
Was bedeutet bswp.:
IIf("0.5" * 2 = 5, ".", ",") --> also wie "0,5" * 2
?
Ich habe zunächst nur versucht, keine Buchstaben zu zulassen - was ist in meiner Datei falsch? Ich möchte das StepByStep verstehen....
Vielen Dank nochmal an Dich, ich muss immer wieder sagen "Tolles Forum" :o).
Viele Grüße,
Frank
Anzeige
AW: Nur Zahlen zulassen
14.10.2011 10:52:14
Tino
Hallo,
IIf("0.5" * 2 = 1, ".", ",") ----- nicht "0.5" * 2 = 5 sondern "0.5" * 2 = 1
Zu IIf kannst Du auch in der Hilfe unter IIf-Funktion nachsehen.
Hier ermittle ich welches Dezimaltrennzeichen im System eingestellt ist.
Ist das Komma eingestellt, ergibt "0.5" * 2 = 10
Ist der Punkt eingestellt, ergibt "0.5" * 2 = 1
Ist nun z.Bsp. das Komma eingestellt und Du drückst in der Textbox den Punkt
wird automtisch daraus ein Komma.
Dadurch ist gewärleistet, das man mit der Textbox normal rechnen kann.
Gruß Tino
AW: Nur Zahlen zulassen
14.10.2011 11:37:16
Tino
Hallo,
man könnte dies nun noch weiter ausbauen.
z.Bsp. wenn noch nichts in der Textbox steht und Du gibst ein Komma ein
wird die 0 automatisch vorangestellt.

Function OnlyNumbers(objTextBox As MSForms.TextBox, intKeyNumber As Integer) As Integer
Dim PunktOderKomma As String
    
PunktOderKomma = IIf("0.5" * 2 = 1, ".", ",")
If intKeyNumber = 44 Or intKeyNumber = 46 Then
    If InStr(objTextBox, PunktOderKomma) = 0 And Len(objTextBox) > 0 Then
      If objTextBox.SelLength = Len(objTextBox) Then objTextBox = ""
      OnlyNumbers = Asc(PunktOderKomma)
    ElseIf Len(objTextBox) = 0 Then
      objTextBox.Value = "0"
      OnlyNumbers = Asc(PunktOderKomma)
    End If
Else
    Select Case intKeyNumber
     Case 48 To 57
        If objTextBox.SelLength = Len(objTextBox) Then objTextBox = ""
        OnlyNumbers = intKeyNumber
     Case Else: OnlyNumbers = 0
    End Select
End If

End Function
Gruß Tino
Anzeige
DANKE DANKE DANKE DANKE Tino :o)
14.10.2011 11:55:13
Frank
...und ein schönes Wochenende.
Viele Grüße,
Frank

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige