Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten aus Listbox in Textbox,dort Anzeigen und ändern, anschließend zurückschreiben i
#21
Hallo Jürgen,

(10.03.2019, 10:29)Merlin-1962 schrieb: Mein Einziges Problem ist bis jetzt noch, dass wenn er in einer Textbox das Falsche Datum eingibt, die MsgBox sich öffnet und geschlossen wird, er zwar durch das Cancel= True
wieder in der Textbox landet, dort aber nichts markiert ist und auch kein Cursor zu sehen ist. Das heist nach seiner Fehleingabe und schließen der MsgBox muss er
die Textbox erst noch einmal mit der Maus anklicken so das ein Cursor erscheint.

Das hatte ich Dir im zweiten Satz beantwortet. Wink Aber gerne noch mal: Setze die Userformeigenschaft ShowModal auf True!

Gruß Uwe
Antworten Top
#22
Hi Uwe,

habe es mit ShowModal True und False probiert, weiterhin das selbe, der Cursor kommt erst nach erneutem anklicken der Textbox mit der Maus.
Habe jetzt mal, um einen Hinweis für den Anwender zu geben, nach verlassen der MsgBox die zu bearbeitende TextBox auf Hintergrund Farbe Rot gesetzt.

Wo ist dieser Cursor geblieben, oder denkt der ein Blinder braucht Ihn nicht zu sehen  Thumbsupsmileyanim Thumbsupsmileyanim Thumbsupsmileyanim Thumbsupsmileyanim

Gruß

Jürgen
Antworten Top
#23
Hi Jürgen,

ob bei meinen Tests der Cursor in der Textbox blinkte, kann ich jetzt gar nicht genau sagen.
Aber auf jeden Fall war der Text markiert und ohne weiteres Klicken überschreibbar. Allerdings nur, wenn ShowModal True ist oder man die MsgBox weglässt.
Hast Du meinen letzten Code ohne Modifizierungen übernommen?

Gruß Uwe
Antworten Top
#24
Hi Uwe,

werde das heute Abend durch die Schreibassistenz nochmal prüfen lassen und Dir bescheid geben

erst einmal vielen Dank

Gruß

Jürgen
Antworten Top
#25
Hallo Jürgen,

bei mir hat es mit der Änderung von Uwe in deiner Datei funktioniert, der Text war markiert.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • Kuwer
Antworten Top
#26
Hallo Steffi,
Hallo Uwe,

habe nochmals alles gelöscht und neu rein kopiert und siehe da es funzt.

Habe es sogar geschafft das je nach Schritt sich die Hintergrundfarben der jeweiligen Textbox ändern und
das die Fehleingabe in der Textbox nach Rückkehr nicht nur markiert sondern geleert wird.
Durch eine weitere IF Abfrage habe ich somit erreicht das der Anwender auch
zwischendrin die Textbox ohne MsgBox verlassen kann.

Wenn es Interessiert, im Anhang die Datei bis zum vorletzten Schritt funktionierend.

Vielen lieben Dank an alle Unterstützenden.

Falls ich den letzten Schritt nicht gelöst bekomme melde ich mich durch ein lautes HILFE  Blush

Gruß

Jürgen


Angehängte Dateien
.xlsm   Fachleistungsstunden.xlsm (Größe: 201,9 KB / Downloads: 8)
Antworten Top
#27
Hallo an alle Spezialisten.

komme doch mit einem sehr lautem Hilfe zurück.  :19:

wie Ihr an der anhängenden Datei erkennen könnt hat sich einiges getan. Doch nun ergibt sich für mich ein
riesiges Problem.

Um nicht jeder Textbox einen Code zuzuweisen zwecks "Nur numerischer Eingabe und Komma" oder "Nur numerischer Eingabe und Punkt" 
oder "Nur numerischer Eingabe" habe ich mich an die Klassenmodule gewagt.
Um bei der Wahrheit zu bleiben, mich an Code Schnipsel bedient.

Um kurz zu beschreiben was ich vorhabe:

Auf der Userform habe ich 117 Textboxen.
-  26 welche nur nummerisch und Komma Eingabe zulassen dürfen,
-  35 welche nur nummerisch und Punkt Eingabe zulassen dürfen
-  17 welche nur numerische Eingaben zulassen dürfen

einen Teil der 30 welche nur nummerische und Komma Eingabe zulassen habe ich wie folgt gelöst:

Klassenmodul angelegt mit dem Namen clsTB und dem nachfolgendem Code:


Code:
Public WithEvents myTB As MSForms.TextBox

Private Sub myTB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 Select Case KeyAscii
   Case 44, 48 To 57               'Festlegen der Zugelassenen Zeichen 0-9 und Komma
     ' tue nichts
   Case Else
     KeyAscii = 0
     MsgBox "Es sind nur Zahlen und Komma erlaubt!", _
     vbInformation, "Hinweis"
 End Select
End Sub

Dann in der Userform unter "Private Sub UserForm_Initialize()"

den nachfolgenden Code eingefügt:


Code:
'Textboxen für nummerische Eingabe und Komma festlegen
 
   Dim v As Variant, l As Long
   v = Array(7, 37, 39, 41, 43, 45, 47, 49, 51, 53, 54, 55, 57, 59, 66, 71, 73, 78, 80, 85, 87, 92, 94, 99, 101, 103) 'Zuständige Textboxen festlegen
   ReDim objTB(UBound(v))
   For l = LBound(v) To UBound(v)
       Set objTB(l).myTB = Me.Controls("TextBox" & v(l))
   Next l

'---------------------------------------------------------------------
'Platzhalter für Textboxen mit numerischer Eingabe und Punkt festlegen





'---------------------------------------------------------------------
'Platzhalter für Textboxen mit nur numerischer Eingabe festlegen





'---------------------------------------------------------------------

Somit funktioniert das mit der nummerischen und Komma Eingabe bei den festgelegten Textboxen super.

Nun habe ich mir gedacht einfach für die beiden weiteren Schritte " Nummer und Punkt" und nur "Nummer"
zwei weitere Klassenmodule anzulegen.

Gesagt - getan und es knallte erbarmungslos.

Meine VBA Kenntisse sind zu erbärmlich um es selbst hinzubekommen und meine sehr langer Suche, in zig Foren nach
Code Schnipseln, war ohne Erfolg.

Zusätzlich erschwert meine Blindheit das eigenständige erstellen.

Vielleicht mache ich ja nur einen Gedanken Fehler und brauche gar keine weitere Klassenmodule.

Allso ganz lieb guck und um Hilfe bitte!!

Gruß

Jürgen


Angehängte Dateien
.xlsm   Fachleistungsstunden.xlsm (Größe: 230,54 KB / Downloads: 5)
Antworten Top
#28
Hallo Jürgen,

in Deiner Datei fehlen die Klassenmodule, bei denen es erbarmungslos knallt Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#29
Hallo Andre,

und alle anderen

Das die Klassenmodule fehlen weis ich, mein Probs ist es dass ich Sie als Blinder nicht selbst hinbekomme.
Bei meinen Versuchen habe ich das bestehende Klassenmodul genommen und einfach unter einer anderen Bezeichnung / Namen abgelegt. Dabei habe ich noch die Zeile welche
die zugelassenen Zeichen festlegt geändert.

Es wäre sehr nett wenn Du mir diese 2 Fehlenden Klassenmodule und die dazugehörigen Codes für die Userform Privat init....
erstellen könntest, so das ich Sie mit Copy und Paste per Sprachsteuerung einfügen kann.

Vielen Dank schon mal

Gruß

Jürgen
Antworten Top
#30
Hallo Jürgen,

ich hab mal hier ein Muster vom Userform-Code für die Verwendung von 3 Klassenmodulen.
Dein clsTb1 habe ich 3x verwendet und jeweils clsTb1, 2 und 3 genannt. Entsprechend ist es 3x dimensioniert mit 3 zugeordneten Objekten und im Initialise wird es 3x verwendet.

Dazu habe ich die 4 Zeilen von v= bis zum Schleifenende kopiert und bei den objTb die Nummer dran gehängt. Bei v= stimmen natürlich die Zahlen der TextBoxen nicht, aber zum Test hab ich jeweils nur zwei bei mir angelegt.
Die erste Reihe brauchst Du nur von Deinem Original kopieren und bei den anderen weiß ich nicht und hab jetzt auch nicht gesucht, welche dazu gehören. Aber vielleicht hast Du die Definition noch in Deinem fehlerhaften Code und brauchst die auch nur einfach zu kopieren.

Da Dein Fehlercode nicht enthalten ist, kann ich natürlich nicht sagen, was da verkehrt lief.    

Code:
Option Explicit

Dim objTB1() As New clsTb1
Dim objTB2() As New clsTb2
Dim objTB3() As New clsTb3

Private Sub UserForm_Initialize()
'Textboxen fuer nummerische Eingabe und Komma festlegen
  Dim v As Variant, l As Long
  v = Array(1, 2) 'Zustaendige Textboxen festlegen
  ReDim objTB1(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB1(l).myTB = Me.Controls("TextBox" & v(l))
  Next l
  v = Array(3, 4) 'Zustaendige Textboxen festlegen
  ReDim objTB2(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB2(l).myTB = Me.Controls("TextBox" & v(l))
  Next l
  v = Array(5, 6) 'Zustaendige Textboxen festlegen
  ReDim objTB3(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB3(l).myTB = Me.Controls("TextBox" & v(l))
  Next l

'---------------------------------------------------------------------
'Platzhalter fuer Textboxen mit numerischer Eingabe und Punkt festlegen
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste