Autor
|
Thema: Modul Zeichen unterbinden (837 mal gelesen)
|
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 16. Apr. 2012 13:25 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe einige TextBoxes in meinem Programm, in denen ich durch folgenden Code nur die Zeichen 0-9 , "," und "." zulasse (Beispiel von einer TextBox): Code: Private Sub TB_housingangle_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)Select Case KeyAscii Case 44 Case 46 Case 48 To 57 Case Else KeyAscii = 0 End Select End Sub
Dies würde ich gerne in ein Modul umwandeln, und dieses dann immer aufrufen, anstatt in jeder KeyPress Prodzedur den gesamten Text hinzuschreiben. Ich hab den Text einfach mal in mein Modul übertragen "modAscii": Code: Sub CATMain()Select Case KeyAscii Case 44 Case 46 Case 48 To 57 Case Else KeyAscii = 0 End Select End Sub
Mir fehlt wahrscheinlich irgendein kleines Detail, aber irgendwie kommm ich gerade nicht darauf... Übrigens: Wenn jemand eine Idee hat wie man den Text so einbauen kann, dass man nicht jede TextBox einzeln mit KeyPress ansprechen muss, sondern das Benutzen von Zeichen global oder lokal für mehrere TextBoxes unterbunden wird, wäre das natürlich noch besser Vielen Dank im Vorraus ------------------ Grüße aus dem schönen Düsseldorf Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Apr. 2012 09:28 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
Hallo Michael, Du musst eine ordentliche Funktion oder wenigstens eine Prozedur daraus machen. Code:
Public Sub trimKeys(ByRef io_iKeyAscii As MSForms.ReturnInteger)Select Case io_iKeyAscii Case 44 Case 46 Case 48 To 57 Case Else io_iKeyAscii = 0 End Select End Sub
und dann halt Code:
Private Sub TB_housingangle_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)call trimKeys(KeyAscii) End Sub
Eventuell musste noch das Control selbst an die Prozedur übergeben, wie es mir scheint (anhand Deines Codes, aber ungetestet) der ReturnCode selbst auszureichen. Fidne ich komisch, sollte aber klappen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 17. Apr. 2012 10:03 <-- editieren / zitieren --> Unities abgeben:
|
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 17. Apr. 2012 11:35 <-- editieren / zitieren --> Unities abgeben:
Achja wo wir hier gerade schon bei Modulen sind kann ich eigentlich noch kurz hinterherfragen, ob man mit Modulen Objekte einer UserForm ansprechen kann. Er sagt nämlich immer "Object required" wenn ich eine TextBox ansprechen will. Wenn ich ich meinen Text normal in die UserForm packe ist alles OK und er erkennt die TextBox, allerdings in einem Modul geschrieben und über "Call Modul.Prozedur" auf der UserForm erkennt er das Objekt nicht. (Weil er ins Modul springt und dort keine Objekte hat, schätze ich) Wie kann man das mit einem Modul bewerkstelligen? Danke im Vorraus ------------------ Grüße aus dem schönen Düsseldorf Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Apr. 2012 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für MichaelTreiber
Servus Du musst auch den Namen der userForm/des Moduls angeben indem sich das anzusprechende Objekt/Subrountine/Funktion befindet: Userform1.Textbox1 Modul1.FuncWertRounden Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MichaelTreiber Mitglied Technischer Produktdesigner
Beiträge: 63 Registriert: 26.01.2011 Win XP/7 (64 Bit) Catia V5R18
|
erstellt am: 17. Apr. 2012 12:56 <-- editieren / zitieren --> Unities abgeben:
|