Ist es möglich, die Beschränkung auf 256 Zeichen in Dropdown-Feldern für die Excel-Validierung zu erhöhen?

StackOverflow https://stackoverflow.com/questions/90365

  •  01-07-2019
  •  | 
  •  

Frage

Ich erstelle die Validierung dynamisch und habe eine Beschränkung auf 256 Zeichen erreicht.Meine Validierung sieht in etwa so aus:

Level 1, Level 2, Level 3, Level 4.....

Gibt es eine andere Möglichkeit, die Zeichenbeschränkung zu umgehen, als auf einen Bereich zu zeigen?

Die Validierung wird bereits in VBA erstellt.Das Erhöhen des Grenzwerts ist der einfachste Weg, um Auswirkungen auf die aktuelle Funktionsweise des Blatts zu vermeiden.

War es hilfreich?

Lösung

Ich bin mir ziemlich sicher, dass an der Beschränkung auf 256 Zeichen kein Weg vorbeiführt, Joel Spolsky erklärt hier, warum: http://www.joelonsoftware.com/printerFriendly/articles/fog0000000319.html.

Sie könnten jedoch VBA verwenden, um die Funktionalität der integrierten Validierung nahezu zu reproduzieren, indem Sie das Worksheet_Change-Ereignis codieren.Hier ist ein Modell, um Ihnen eine Vorstellung zu geben.Sie möchten es wahrscheinlich umgestalten, um die ValidValues ​​zwischenzuspeichern, Änderungen an Zellbereichen zu verarbeiten usw.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ValidationRange As Excel.Range
Dim ValidValues(1 To 100) As String
Dim Index As Integer
Dim Valid As Boolean
Dim Msg As String
Dim WhatToDo As VbMsgBoxResult

    'Initialise ValidationRange
    Set ValidationRange = Sheet1.Range("A:A")

    ' Check if change is in a cell we need to validate
    If Not Intersect(Target, ValidationRange) Is Nothing Then

        ' Populate ValidValues array
        For Index = 1 To 100
            ValidValues(Index) = "Level " & Index
        Next

        ' do the validation, permit blank values
        If IsEmpty(Target) Then
            Valid = True
        Else
            Valid = False
            For Index = 1 To 100
                If Target.Value = ValidValues(Index) Then
                    ' found match to valid value
                    Valid = True
                    Exit For
                End If
            Next
        End If

        If Not Valid Then

            Target.Select

            ' tell user value isn't valid
            Msg = _
                "The value you entered is not valid" & vbCrLf & vbCrLf & _
                "A user has restricted values that can be entered into this cell."

            WhatToDo = MsgBox(Msg, vbRetryCancel + vbCritical, "Microsoft Excel")

            Target.Value = ""

            If WhatToDo = vbRetry Then
                Application.SendKeys "{F2}"
            End If

        End If

    End If

End Sub
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top