Listas de Validación

Hola Perseo ómo estás, espero me puedas ayudar..
Estoy realizando listas de validación con Excel de un rango de celdas... Desde una Macro, ya logré hacerlo así como eliminar las celdas que estén vacías para no tomarlos en cuenta.
Mi pregunta es como puedo hacer (si es posible) que una celda que tiene una lista de validación pueda ser editada, es decir que pueda escribir algún texto que no esté dentro de su propia lista.
A continuación te muestro lo que llevo. Gracias por tu atención y ojala que me puedas ayudar
Sub recuperaDatos()
'Declaracion de variables
Dim celda As Range
Dim ElementosLista As New Collection
Dim Item As Variant
Dim texto As String
Dim cadenaSplit As Variant
Dim i As Integer
Dim numeroRegistros As Integer
Dim columna As String
Dim rangoValores As String
'Obtenemos valores de celdas y eliminamos registros vacios
For Each celda In Worksheets(1).Range("D:D")
If celda.Value <> "" Then
ElementosLista.Add celda.Value
End If
Next celda
'Limpiar columna de ayuda
Sheets.Item("pega").Range("IV:IV").Clear
'Obtenemos el numero de registros obtenidos de las celdas
numeroRegistros = ElementosLista.Count
'Recorremos Coleccion de Elementos y los pegamos en la hoja -pega-
For k = 1 To numeroRegistros
columna = "IV" & (k) 'Especificamos en que celda queremos los valores
Worksheets("pega").Range(columna).Value = ElementosLista.Item(k)
Next k
If numeroRegistros >= 1 Then
'Ahora creamos Cadena para Rango de Valores
rangoValores = "=pega!$IV$1:$IV$" & numeroRegistros
ActiveSheet.Range("D:D").Show
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=rangoValores
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = "Introduzca un valor establecido en la lista"
.ShowInput = True
.ShowError = True
End With
End If
End Sub

1 Respuesta

Respuesta
1
Pienso que las celdas validadas no se pueden editar si no es cumpliendo las restricciones de la validación. Al fin y al cabo, para eso están. Incluso con código no creo que se pueda hacer ya que estaríamos obligando a Excel a romper sus normas al crear una lista de validación que admite datos que no pertenecen a la lista.
Lo que si pienso que se puede hacer, es crear la lista de validación mediante código y que se active con un evento, que inicialmente podría estar incluido en Auto_Open, y posteriormente, mediante otro evento o combinación de letras, activar un nuevo código que elimine la celda para que pueda editarse.
De esta forma, a tu voluntad creas o eliminas la celda.
Hola otra vez Perseo. Sabes también había pensado esa idea de que con algún evento hacer que la celda cambia su forma es decir que deje de tener una lista de validación y pueda ser editada, pero la verdad no sabría como hacerlo, entiendo bien el concepto de cambiar la acción de la celda, ¿pero cómo podría hacerlo?
La idea seria que inicialmente tenga la lista de validación y luego con alguna combinación de letras esa lista se elimine y la celda pueda ser editada, luego si se presiona algunaotra combinación de letras volver a cargar la celda con la lista de validación... ¿podrías ayudarme?
Eso es fácil.
Se supone que tienes dos macros, una para crearte la lista de validación y otra para eliminarla.
Te vas a Herramientas-->Macros... Te aparecerá el cuadro de diálogo "Macro" con todas las macros que tiene el libro. Seleccionas una de las que te interesan y pulsas el botón "Opciones..." con lo que te aparece un nuevo cuadro de diálogo "Opciones de la macro", donde podrás poner una letra de método abreviado. Repites la operación con la otra macro y listo.
Puedes elegir alguna letra que sirva para otra cosa, porque te la tomará, eso si, al asignarle el acceso directo a la macro, perderá su función actual. Por ejemplo, si utilizas la "x", servirá para invocar la macro, pero dejará de servir para cortar.
Se pueden poner mayúsculas, porque las distingue.
Ya me dirás si te funcionó
Muchas gracias Perseo me ayudo mucho la idea que me diste, pude crear listas de Validación desde una macro (manualmente) y con una combinación de teclas quitar esa lista y que la celda pudiera ser editada.
Gracias por tu ayuda

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas