ich wende mich mit einem Problem an euch.
Ich habe eine Userform mit einer Vielzahl an Textboxen.
Wenn in einer Textbox eine Eingabe gemacht wurde, soll eine Prüfung stattfinden, die evtl. einige andere Textboxen für eine Eingabe sperrt.
Um nicht für jede Textbox ein _Change-Event zu hinterlegen, ermittel ich mit einem Klassenmodul, in welcher Textbox die Entertaste gedrückt wird (KeyDown). Ich erhalte den Namen der Textbox, die mittels der Entertase verlassen wurde. Soweit so gut.
Jetzt möchte ich aber (nach Drücken der Entertaste) die 2 links stehenden Textboxen auf Ihren Wert abfragen. Und genau hier hänge ich fest. Ich habe schon versucht den zurückgegebenen Textboxnamen zu zerlegen ("Textbox1004" in "Textbox" und "1004" zerlegt) , von der Zahl 1 bzw 2 subtrahieren, wieder zusammensetzen ("Textbox" und "1003" ergibt dann "Textbox1003") und dann den Wert dieser Textbox abzufragen. Aber mein VBA scheint es an irgendetwas zu fehlen. Wenn ich die Textbox direkt anspreche (Textbox1003.Value) erhalte ich den Wert als Rückgabe und kann diesen einer Variablen zuordnen. Aber beim zusammengebauten Textboxnamen klappt dies nicht.
Private Sub TxtBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim test
Select Case KeyCode
Case 9, 13, 37 To 40
test = userform.TextBox1004.Value ' ======== hier erhalte ich eine korrekte Rückgabe
' test = (Left(TxtBox.Name, 7) & Mid(TxtBox.Name, 8) - 1)
' test = "userform.TextBox" & 1004
' test = userform.TextBox1004.Value
End Select
..
..
Die auskommentieren Teile erzeugen eine Fehlermeldung. Wenn die Textbox mit dem festen Namen angesprochen wird, klappt es. Sobald ich in irgendeiner Weise den Textboxnamen zusammmensetze. klappt es nicht.
Hat von euch jemand eine Idee wie ich die lösen kann ?
Gruß Paul