Excel 유효성 검사 드롭다운 상자에서 256자 제한을 늘릴 수 있습니까?

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

  •  01-07-2019
  •  | 
  •  

문제

유효성 검사를 동적으로 생성 중인데 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top