Excel の検証ドロップダウン ボックスの 256 文字制限を増やすことはできますか?
質問
検証を動的に作成していますが、256 文字の制限に達しました。私の検証は次のようになります。
Level 1, Level 2, Level 3, Level 4.....
範囲を指定する以外に文字制限を回避する方法はありますか?
検証はすでに VBA で生成されています。制限を増やすことが、シートの現在の動作への影響を回避する最も簡単な方法です。
解決
256 文字の制限を回避する方法はないと確信していますが、その理由を Joel Spolsky がここで説明しています。 http://www.joelonsoftware.com/printerFriendly/articles/fog0000000319.html.
ただし、VBA を使用して、Worksheet_Change イベントをコーディングすることで、組み込み検証の機能を複製することに近づけることができます。アイデアを提供するためのモックアップを次に示します。おそらく、ValidValues をキャッシュしたり、セル範囲への変更を処理したりするために、それをリファクタリングする必要があるでしょう...
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
所属していません StackOverflow