Saltar al contenido

Macro validación listas desplegables


Carlosgumar

Recommended Posts

publicado

Hola,

Sucede que necesito crear una macro que me permita validar los datos de una lista desplegable después de haber pegado una información. Me explico, tengo un archivo en el que quiero que las personas puedan ingresar una información (en general, por el volumen de registros las personas copian y pegan la información) y posteriormente esta sea validad por algún tipo de macro.

Dentro del archivo existen variables que tienen información de una lista desplegable y me gustaría que al pegar la información, excel pueda validar que los datos son aquellos que pertenecen al grupo de la lista desplegable que tengo. Si algún dato no corresponde, la idea sería que excel sacara un aviso indicando qué dato es erroneo.

Nota: Cuando pego información sobre alguna lista desplegable el validador se pierde.

Alguno tiene idea de cómo puedo hacer esto?

publicado

Hola, gracias por tu respuesta. La verdad es que estoy buscando algo parecido a este código:

PrivateSub Worksheet_Change(ByVal Target As Range)

' rutina desarrollada por Jorge Dunkelman - JLD Excel Blog

' parte del codigo tomado de la nota de John Walkenbach Excel Developer Tip: Ensuring that Data Validation is Not Deleted

Dim rngValid As Range, cell As Range

Dim Msg AsString

Dim codeValid AsVariant

Set rngValid = Range("rngValidado")

OnErrorResumeNext

IfNot HasValidation(rngValid) Then

Application.Undo

MsgBox "Valor no válido", vbCritical

Application.EnableEvents = False

Target.ClearContents

Application.EnableEvents = True

EndIf

ForEach cell In Target

If Union(cell, rngValid).Address = rngValid.Address Then

codeValid = ActiveCell.Validation.Value

If codeValid = TrueThen

ExitSub

Else

MsgBox "Valor no válido", vbCritical

Application.EnableEvents = False

cell.ClearContents

cell.Activate

Application.EnableEvents = True

EndIf

EndIf

Next cell

EndSub

PrivateFunction HasValidation® AsBoolean

Dim x

OnErrorResumeNext

x = r.Validation.Type

If Err.Number = 0 Then HasValidation = TrueElse HasValidation = False

EndFunction

Tomado de : JLD Excel en Castellano.

La cosa es que al ingresar valores en otras celdas, la macro también me los toma y me dice que el valor no es válido. EN ese sentido, me gustaría saber cómo puedo restringir la operación a solo unas celdas, pues si bien asigno un rango específico, la macro me sigue corriendo en toda la hoja.

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.