Textbox.value Gültigkeitsbereich prüfen

  • Excel

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Textbox.value Gültigkeitsbereich prüfen

    Hallo zusammen,

    ich habe mal wieder eine "Problemchen" mit VBA.

    Ich fülle eine Tabelle über TextBoxen in einer UserForm.
    Möchte nach der Eingabe eines Wertes in eine Textbox prüfen, ob er innerhalb eines von mir definierten Gültigkeitsbereiches liegt.

    habe einen Code mit if, else bei dem ich die Zahlen mit <> prüfe, der funktioniert auch.

    Was ich aber nicht hinbekomme ist, das der Textbox-Wert mit einem definierten Gültigkeitsbereich in einer Tabelle verglichen wird, mache das mit Application.match. Bekomme einen Fehler: Argument ist nicht optional

    Vielen Dank für eure Hilfe

    hier der Code der nicht funktioniert:

    Visual Basic-Quellcode

    1. Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    2. If TextBox2.Value <> "" Then
    3. If Not TextBox2.Value = Application.WorksheetFunction.Match(Worksheets("Grenzwerte").Range("B3:B70")) Then
    4. TextBox2.Value = ""
    5. TextBox2.BackColor = vbRed
    6. MsgBox "Bitte einen korrekten Fasercode eingeben eingeben"
    7. Else
    8. Exit Sub
    9. End If
    10. Cancel = True
    11. End If
    12. txt_N TextBox2
    13. End Sub
    1. Die Application.WorksheetFunction.Match-Funktion braucht mind. 2 Parameter, siehe Doku. Sieht aber so aus, als kannst Du damit nur einen Tabellenwert (Parameter1) in einem Tabellenbereich (Parameter2) finden und bekommst als Ergebnis eine Position zurück. Du versuchst da aber was zu basteln, was überhaupt nicht vorgesehen ist. Weitere Infos dazu kommen bestimmt von @petaod, @mumpel und anderen.
    2. In Zeile#6, also der Fehlermeldung, steht am Ende 2x "eingeben"
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Nor schrieb:

    If Not TextBox2.Value = Application.WorksheetFunction.Match(Worksheets("Grenzwerte").Range("B3:B70")) Then
    Ein Schuss auf die Schnelle:

    Visual Basic-Quellcode

    1. ​If Not Worksheets("Grenzwerte").Range("B3:B70").Find(TextBox2.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then


    Aber denke auch mal über den obigen Vorschlag von @ISliceUrPanties nach.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    DAnke euch,

    Die Dropdownliste ist eine gute Idee, aber nur bei wenigen Auswahlpunkten wirklich praktikabel. Meine Dropdownliste wäre zu lang.

    Aber mittlerweile habe ich einen anderen Weg gefunden:

    Visual Basic-Quellcode

    1. ​Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    2. Dim VglOK As Boolean
    3. Dim CBText As String
    4. Dim i As Long
    5. Dim aVergleich()
    6. aVergleich = ActiveWorkbook.Sheets("Dropdownlisten").Range("B3:B70").Value
    7. For i = 1 To UBound(aVergleich)
    8. If CStr(aVergleich(i, 1)) = TextBox2.Text Then
    9. VglOK = True
    10. Exit For
    11. End If
    12. Next i
    13. If Not VglOK Then
    14. TextBox2.Value = ""
    15. TextBox2.BackColor = vbRed
    16. MsgBox "Bitte einen richtigen Fasercode eingeben"
    17. TextBox2.SetFocus
    18. Cancel = True
    19. End If
    20. txt_N TextBox2
    21. End Sub


    DAnke für Euren support

    Gruß Norbert