validacion tipos personalizada multiple mac lista ejemplos desplegable datos autocompletar excel vba

tipos - ¿Es posible aumentar el límite de 256 caracteres en los cuadros desplegables de validación de Excel?



validacion de datos en excel lista desplegable (1)

Estoy creando la validación dinámicamente y he alcanzado un límite de 256 caracteres. Mi validación se ve así:

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

¿Hay alguna forma de evitar el límite de caracteres y luego apuntar a un rango?

La validación ya se está produciendo en VBA. Aumentar el límite es la forma más fácil de evitar cualquier impacto sobre cómo funciona actualmente la hoja.


Estoy bastante seguro de que no hay forma de superar el límite de 256 caracteres, Joel Spolsky explica por qué aquí: http://www.joelonsoftware.com/printerFriendly/articles/fog0000000319.html .

Sin embargo, podría usar VBA para acercarse a la replicación de la funcionalidad de la validación integrada al codificar el evento Worksheet_Change. Aquí hay una maqueta para darte la idea. Es probable que desee refactorizarlo para almacenar en caché ValidValues, gestionar cambios en rangos de celdas, etc.

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