Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Nur Zahleneingabe in Textbox

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  Nur Zahleneingabe in Textbox (1694 mal gelesen)
schmodi
Mitglied
Metallbaukonstrukteur


Sehen Sie sich das Profil von schmodi an!   Senden Sie eine Private Message an schmodi  Schreiben Sie einen Gästebucheintrag für schmodi

Beiträge: 57
Registriert: 20.05.2007

Autodesk Architecural Desktop 2007
Windows XP Professional Version 2002 SP2
Pentium 1.7 MHZ, 1 GB Ram

erstellt am: 06. Feb. 2008 21:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo
Ich habe ein problem, wie kann ich in einer Textbox beschränken das nur Zahlen eingegeben werden können.
Ich habe gegoogelt und habe dies gefunden aber leider funktioniert es nicht.

Private Sub Text1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case 48 To 57
    Case Else
      KeyAscii = 0
  End Select
End Sub

Es heisst immer "Dekleration der Prozedur entspricht nicht Beschreibeung eines Ereignisses oder einer Prozedur mit demselben Namen"
Ich hoffe ihr könnt mir weiterhelfen wie ich das Problem lösen kann.

Gruss Schmodi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 06. Feb. 2008 21:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für schmodi 10 Unities + Antwort hilfreich

Hi Schmodi,

Das hast du was falsch kopiert. 

Es muss so lauten:

Code:
Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Select Case KeyAscii
    Case 48 To 57
    Case Else
      KeyAscii = 0
  End Select
End Sub

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

schmodi
Mitglied
Metallbaukonstrukteur


Sehen Sie sich das Profil von schmodi an!   Senden Sie eine Private Message an schmodi  Schreiben Sie einen Gästebucheintrag für schmodi

Beiträge: 57
Registriert: 20.05.2007

Autodesk Architecural Desktop 2007
Windows XP Professional Version 2002 SP2
Pentium 1.7 MHZ, 1 GB Ram

erstellt am: 07. Feb. 2008 20:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo
Vielendank Carsten. Es funktioniert wunderbar. Habe aber noch eine weitere frage. Ich habe jetzt ganz viele Textbox in meinem Userform. Muss ich für jede Textbox diesen Code eingeben oder gibt es eine möglichkeit alle miteinander anzusprechen.

Gruss Schmodi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 08. Feb. 2008 06:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für schmodi 10 Unities + Antwort hilfreich

Hi Schmodi,

Ich denke, da wirst du nicht drum herum kommen.
Ich lasse mich aber gerne eines besseren belehren.

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 08. Feb. 2008 10:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für schmodi 10 Unities + Antwort hilfreich

Hallo Schmodi,

im VBA wird dir nichts anderes übrig bleiben als den Code in eine Funktion zu packen und diese an den KeyPress Event einer jeden Textbox zu hängen. Im Gegensatz zu VB werden unter VBA keine Steuerelementfelder unterstützt. Im VB.net kannst du einen gemeinsamen Eventhandler für diverse auch unterschiedliche Steuerelemente bündeln.

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Nepumuk
Mitglied
Entwicklungsleiter


Sehen Sie sich das Profil von Nepumuk an!   Senden Sie eine Private Message an Nepumuk  Schreiben Sie einen Gästebucheintrag für Nepumuk

Beiträge: 351
Registriert: 16.10.2004

erstellt am: 10. Feb. 2008 11:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für schmodi 10 Unities + Antwort hilfreich

Hallo Schmodi,

dazu legst du dir einfach eine Klasse der Textboxen an.

Beispiel

In Klassenmodul des Userforms:

Code:
Option Explicit

Private objTextBox() As clsTextBox

Private Sub UserForm_Activate()
    Dim objControl As Control
    Dim intIndex As Integer
    'durchlaufe alle Steuerelemente des Userforms
    For Each objControl In Controls
        'wenn das Steuerelement eine Textbox ist
        If TypeOf objControl Is MSForms.TextBox Then
            'Zähler für Textboxen eins hoch setzen
            intIndex = intIndex + 1
            'Array um einen Eintrag erweitern ohne die vorhergehenden zu löschen
            ReDim Preserve objTextBox(1 To intIndex)
            'eine neue Klasse im Array anlegen
            Set objTextBox(intIndex) = New clsTextBox
            'der Objekteigenschaft der Klasse das Objekt übergeben
            Set objTextBox(intIndex).prpTextBox = objControl
        End If
    Next
End Sub

Private Sub UserForm_Terminate()
    Dim intIndex As Integer
    For intIndex = 1 To UBound(objTextBox)
        'Klasse zerstören
        Set objTextBox(intIndex) = Nothing
    Next
    'Array löschen
    Erase objTextBox
End Sub


Füge ein Klassenmodul ein und benenne es "clsTextBox"

Da kommt folgender Code rein:

Code:
Option Explicit

Private WithEvents mobjTextBox As MSForms.TextBox

Friend Property Set prpTextBox(objTextBox As MSForms.TextBox)
    'übergebenes Objekt an die Klasse verweisen
    Set mobjTextBox = objTextBox
End Property

Private Sub mobjTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Asciicode der gedrückten Taste auswerten
    If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub


Das ist natürlich nur ein Beispiel, denn es werden ausnahmslos alle Textboxen des Userforms an die Klasse verwiesen.

Eine Abfrage mit If - Then ist in dem Fall wesentlich schneller als Select - Case. Das macht nur Sinn, wenn du bei verschiedenen Werten verschiedene Aktonen ausführst oder verschiedene Werte zurück gibst.

------------------
Gruß
Nepumuk 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz