Ist es möglich, die Beschränkung auf 256 Zeichen in Dropdown-Feldern für die Excel-Validierung zu erhöhen?
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.
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