Agregar valores a una lista de validación

30/11/2004 - 19:49 por Raúl | Informe spam
Saludos

Necesito saber lo siguiente:
Tengo una lista de validacion en una celda de una hoja Excel con un rango,
necesito saber como agregar valores a la lista dinamicamente es decir si el
usuario no encuentra la opción deseada se agrege a estaq lista ¿se puede?

Gracias

Raul
 

Leer las respuestas

#1 Héctor Miguel
01/12/2004 - 06:29 | Informe spam
hola, Raúl !

... una lista de validacion ... con un rango ... como agregar valores a la lista dinamicamente
... si el usuario no encuentra la opcion deseada se agrege a esta lista [...]



NO 'directamente' por las reglas de validacion ... se necesita de macros en los eventos de 'la hoja' [p.e.]
1.- 'asigna' un nombre al rango con el listado para la validacion [en el ejemplo uso: 'ListaValidacion']
2.- ASEGURATE que 'el primer elemento' sea +/- 'representativo' de su accion [p.e. Agregar elemento] :))
3.- copia/pega las siguientes lineas [estoy suponiendo que la celda con la validacion es 'A1']...
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_Change(ByVal Target As Range)
Dim Nuevo As String, Agregando As Boolean
If Agregando Then Exit Sub
If Target.Address <> "$A$1" Then Exit Sub Else Agregando = True
If Target = "Agregar elemento" Then
Nuevo = Trim(InputBox("Proporciona los datos nuevos...", "Agregar elemento"))
If Nuevo = "" Then GoTo Salir
With Me.Range("ListaValidacion")
.Cells(2).Insert xlDown: .Cells(2) = Nuevo
.Sort Key1:=.Cells(2), Order1:=xlAscending, Header:=xlGuess
End With: Target = Nuevo: GoTo Fin
Salir:
Target.ClearContents
Fin:
Agregando = False
End If
End Sub

4.- si el rango-nombre con el listado esta en una hoja 'diferente'...
cambia la linea que se 'lee'... ->With Me.Range("ListaValidacion")<-
por... ->With Worksheets("Nombre_hoja_CON_la_lista").Range("ListaValidacion")<-

aunque existe la posibilidad de utilizar 'otro tipo' de objetos [tambien con macros]
estoy 'aprovechando' que ya usar las reglas de validacion ;)
'funciona'... [siempre y cuando] si estas utilizando excel 2000 'en adelante'

saludos,
hector.

Preguntas similares