Una familia de software de hoja de cálculo de Microsoft con herramientas para analizar, trazar y comunicar datos.
<<<<1) es importante que expongas el codigo con el que construyes el "array" With Hoja4.Range("A11:A65536")
Set c = .Find(Target, LookIn:=xlValues)
Contador = 0
If Not c Is Nothing Then
FirtsAddress = c.Address
Do
valor(Contador) = c.Offset(0, 3) 'valor es aqui la Array [ ... ]
<<<<2) para el tipo de validacion (xlValidateList), el argumento "Formula1" debe contener una lista de valores (valor constante o valor de cadena) delimitados por comas o una referencia de hoja de calculo a dicha lista.
Por aqui pasa la solucion, pero.....
<<<<3) es importante notar que el caracter delimitador (si coma o punto y coma) dependera de la configuracion regional del equipo donde se ejecuta la macro.
En mi caso punto y coma, Pero esto es para funciones ¿no?
- si estas usando "Target" significa que el codigo esta en algun evento ('_change' o '_selectionchange') en un modulo de clase (hoja o libro) que lo podria volver "repetitivo/machacante/..." (a menos que tengas algun "candado" para su ejecucion ?)
Te refieres a esto:
If Not Target = "" And Not Intersect(Target, [D11:D65536]) Is Nothing Then........................
hola, Ignacio !
- una vez que colectas los valores en el "array" (en tu ejemplo la variable llamada "valor"), la forma de asignarlo a las reglas de validacion por codigo es cambiar la parte de "Formula1":
de: => Formula1:=Array
a: => Formula1:=Join(valor, sL)
- la "nueva" variable (sL) es para identificar el separador de listas (y argumentos) en el equipo donde se ejecuta la macro, la defines y la estableces en 2 lineas de codigo (en alguna parte de tu proceso) +/- como sigue:
Dim sL As String
sL = Application.International(xlListSeparator)
- al conocer el evento que usas (probablemente el '_change') y las razones para machacar reglas de validacion por codigo (probablemente) se podria sugerir otro metodo o procedimiento, ya que las reglas de validacion tienen alguna "hiper-sensibilidad" cuando son repetidamente administradas por codigo y podrian poner en riesgo la integridad de esa hoja, ademas, no es claro como reaccionaria el codigo cuando el "Target" es de varias celdas (???)
probablemente existan otras formas de lograr el objetivo (si comentas cual es exactamente ?)
saludos,
hector.
p.d. agrego: si la cadena resultante del Join(... excede 255 caracteres, la propiedad "Validation" fallara :-(