Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textbox-MaxLength Problem...

Forumthread: Textbox-MaxLength Problem...

Textbox-MaxLength Problem...
robert
Hallo,
mit diesem Code soll nur eine einstellige Eingabe in die UF-Textboxen
möglich sein.
Funkt auch, aber siehe VBE-Eigenschaften MaxLength der Textboxen-
lt. Beispieldatei.
Gruß
robert
Option Explicit
Sub tt()
Dim cbElement As Control                    ' Variable für die TextBox als Steuerelement
'   Schleife über alle Steuerelemente
Dim i As Long
Range("A1:C200").ClearContents
For Each cbElement In UserForm1.Controls
If TypeName(cbElement) = "TextBox" Then
cbElement.MaxLength = 1
i = i + 1
Cells(i, 1) = UserForm1.Name
Cells(i, 2) = cbElement.Name
Cells(i, 3) = cbElement.MaxLength
End If
Next cbElement
UserForm1.Show
End Sub
https://www.herber.de/bbs/user/78924.xls
Anzeige
AW: Textbox-MaxLength Problem...
14.02.2012 19:59:52
Josef

Hallo Robert,
ich verstehe dein Problem nicht, du änderst die Eigenschaft zur Laufzeit, das im VBE (Entwurfszeit) was anderes angezeigt wird, ist doch normal.

« Gruß Sepp »

Anzeige
OK, aber wie dann fix...
14.02.2012 20:11:24
robert
Hallo Sepp,
..in die Textboxen schreiben?
Geht das überhaupt ? wenn ja-bitte um Code ;-)
Danke und Gruß
robert
AW: OK, aber wie dann fix...
14.02.2012 20:13:59
Josef

Hallo Robert,
was Code? Einfach in den Eigenschaften (im VBE) auf 1 Stellen.

« Gruß Sepp »

Anzeige
AW: OK, aber wie dann fix...
14.02.2012 20:26:43
Josef

Hallo Robert,
du hast zwar keine Ahnung, und ich weiß nicht wozu das gut sein soll, aber so kannst du die Eigenschaften per Code ändern.
Sub test()
  Dim objCntrl As MSForms.Control
  
  With ThisWorkbook.VBProject.VBComponents("UserForm1").Designer
    For Each objCntrl In .Controls
      If TypeOf objCntrl Is MSForms.TextBox Then
        objCntrl.MaxLength = 1
      End If
    Next
  End With
  
End Sub



« Gruß Sepp »

Anzeige
@Sepp, na so schlimm...
15.02.2012 08:21:05
robert
Hallo Sepp,
von "keiner Ahnung" bin ich meiner bescheidenen Meinung nach
weit davon entfernt ;-)
Sicher, mit Dir und Deinem Wissen kann ich mich in keiner Weise messen,
das sehe ich immer wieder an Deinen Lösungen ;-)
Mir fehlt einfach ein Basiswissen, ich setz mich hin,probier was,
suche hier im Forum und bastle etwas zusammen.
Es sind auch keine große Projekte, eher Spielereien, eben Zeitvertreib und Hilfe
an diejenigen in meinem Freundeskreis, die noch weniger Ahnung als ich haben.
Nun, wozu das gut sein soll:
Es soll hier in die Textfelder nur eine einstellige Zahleneingabe möglich sein-
ca 150 Textboxen in der Echtdatei.(Golfauswertung)
Ich schätze, dass Du das eleganter und besser lösen würdest und ich
würde mich freuen, wenn Du mir den Weg aufzeigen könntest.
Übrigens-natürlich funkt Dein Code...Danke
Gruß
robert
Anzeige
AW: @Sepp, na so schlimm...
15.02.2012 09:28:58
Josef

Hallo Robert,
wie ich das lösen würde, ganz einfach, alle TB's im Entwurf-Modus markieren und die Eigenschaft MaxLength auf 1 stellen, warum sollte ich eine Eigenschaft die ich fix einstellen kann und bei der es nicht nötig ist, sie während der Laufzeit zu ändern, per Code einstellen.

« Gruß Sepp »

Anzeige
Danke Sepp! Gewusst wie ;-)) owT
15.02.2012 10:05:39
robert
AW:@robert
15.02.2012 11:33:44
hary
Moin Robert
Bist Du immer noch am Golf(ball)auswertung? Hast Du schon eine Loesung des alten Problems mit dem Handycap?
gruss hary
@Hary-Ja, eigentlich schon.... owT
15.02.2012 13:02:12
robert
Anzeige
AW: @Robert
15.02.2012 13:33:40
hary
Hallo Robert
Wenn Du fertig bist, wuerde mich interessieren wie diese Handycapberechnung genau funzt. So zum lesen war's ja kompliziert.
gruss hary
@hary, und ich dachte...
15.02.2012 17:11:56
robert
Hi hary,
...Du hast eine "einfache" Lösung für mich ;-)
Gruß
robert
;
Anzeige

Infobox / Tutorial

Textbox-MaxLength in Excel VBA richtig einstellen


Schritt-für-Schritt-Anleitung

Um die MaxLength-Eigenschaft von Textboxen in Excel VBA zu ändern, folge diesen Schritten:

  1. Öffne den Visual Basic Editor (VBE) in Excel (Alt + F11).

  2. Erstelle eine neue UserForm oder öffne eine bestehende.

  3. Füge die gewünschten Textboxen zu deiner UserForm hinzu.

  4. Füge den folgenden VBA-Code in das Modul ein:

    Sub tt()
       Dim cbElement As Control
       Dim i As Long
       Range("A1:C200").ClearContents
       For Each cbElement In UserForm1.Controls
           If TypeName(cbElement) = "TextBox" Then
               cbElement.MaxLength = 1 ' Setze die MaxLength auf 1
               i = i + 1
               Cells(i, 1) = UserForm1.Name
               Cells(i, 2) = cbElement.Name
               Cells(i, 3) = cbElement.MaxLength
           End If
       Next cbElement
       UserForm1.Show
    End Sub
  5. Schließe den VBE und teste deine UserForm, um sicherzustellen, dass die Textboxen nur eine einstellige Zahl akzeptieren.


Häufige Fehler und Lösungen

  • Problem: Die MaxLength-Eigenschaft wird nicht wie erwartet gesetzt.

    • Lösung: Stelle sicher, dass du den Code im richtigen Kontext ausführst (z.B. im VBE und nicht im Excel-Arbeitsblatt).
  • Problem: Textboxen akzeptieren mehr als eine Ziffer.

    • Lösung: Überprüfe, ob der Code korrekt in der UserForm platziert ist und dass die Textboxen ordnungsgemäß an den Code gebunden sind.

Alternative Methoden

Eine einfache Möglichkeit, die MaxLength-Eigenschaft von Textboxen zu setzen, besteht darin, diese direkt im VBE zu ändern:

  1. Wähle die Textbox in deiner UserForm aus.
  2. Gehe zu den Eigenschaften (Properties).
  3. Setze die MaxLength-Eigenschaft manuell auf 1.

Diese Methode ist schneller, wenn du nicht viele Textboxen hast.


Praktische Beispiele

Hier ist ein Beispiel, wie du die MaxLength-Einstellung für mehrere Textboxen in einer UserForm setzen kannst:

Sub SetTextboxMaxLength()
    Dim ctrl As Control
    For Each ctrl In UserForm1.Controls
        If TypeOf ctrl Is MSForms.TextBox Then
            ctrl.MaxLength = 1
        End If
    Next ctrl
End Sub

Dieser Code durchläuft alle Steuerelemente in UserForm1 und setzt die MaxLength für jede Textbox auf 1.


Tipps für Profis

  • Verwende die MaxLength-Eigenschaft nicht nur, um die Eingabe zu beschränken, sondern auch, um sicherzustellen, dass die Benutzerfreundlichkeit deiner Formulare erhöht wird.
  • Experimentiere mit dem Event-Handling in VBA, um Benutzerfeedback zu geben, wenn sie versuchen, mehr als die erlaubten Zeichen einzugeben.

FAQ: Häufige Fragen

1. Wie kann ich die MaxLength-Eigenschaft in einer bestehenden UserForm ändern? Du kannst die MaxLength-Eigenschaft über den VBE in den Eigenschaften der Textbox ändern oder den oben genannten VBA-Code verwenden.

2. Was passiert, wenn ich versuche, mehr Zeichen einzugeben als erlaubt? Die Textbox akzeptiert keine zusätzlichen Zeichen, wenn die MaxLength-Eigenschaft gesetzt ist.

3. Funktioniert das in allen Excel-Versionen? Die beschriebenen Methoden funktionieren in den meisten modernen Excel-Versionen, die VBA unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige