¿Cómo asignar valores a un rango?
Tengo el siguiente código, que me valida si la celda tiene "validación de datos", revisa si se encuentra en el listado permitido y sino no deja pegar datos con Ctrl+V solo con Pegar Valores.
Mi duda es:
Tengo que hacer el pegado en varias columnas, este solo me lo hace en la primera, intento establecer mediante un select case o un If pero no me lo permite. ¿Cómo puedo decirle que haga el recorrido en la siguiente columna con un nombre de rango diferente?
Dejo el archivo ejemplo y código:
https://drive.google.com/file/d/1aLmlPpEJDT_04CSmY9gbk2UYP3iP_m5p/view?usp=sharing
Option Explicit Dim PegarValor As Range, Celda As Range, Empleado As Variant 'Evento que se produce cuando cambia cualquier celda en la Private Sub Worksheet_Change(ByVal Target As Range) 'Procedimiento que deja pegar solamente valores en 'el rango de Excel llamado "ModEquipo1" Set PegarValor = Range("ModEquipo1") On Error Resume Next If Not ValidaciónExitosa(PegarValor) Then Application.Undo MsgBox ("En esta celda solo se puede pegar valores") Application.EnableEvents = False Target.ClearContents Application.EnableEvents = True End If RecorrerCeldas End Sub ' Procedimiento que recorre todas las celdas del rango de Excel 'llamado "ModEquipo1" verificando que tengan un valor valido Sub RecorrerCeldas() Set PegarValor = Range("ModEquipo1") MsgBox Celda.Value For Each Celda In PegarValor If Union(Celda, PegarValor).Address = PegarValor.Address Then Empleado = ActiveCell.Validation.Value If Empleado = True Then Exit Sub Else MsgBox ("Conductor Inexistnte") Application.EnableEvents = False Celda.ClearContents Celda.Activate Application.EnableEvents = True End If End If Next Celda End Sub 'Función definida por el usuario que sirve como filtro inicial 'indicando que Sí la celda que cambio tiene Validación de Datos continúa 'en caso contrario hasta ahi llega el procedimiento. Private Function ValidaciónExitosa(ParaEvaluar) As Boolean Dim ErrorEvaluado As Variant On Error Resume Next ErrorEvaluado = ParaEvaluar.Validation.Type If Err.Number = 0 Then ValidaciónExitosa = True Else: ValidaciónExitosa = False 'Como los proedimientos se leen de arriba hacía abajo, 'Cuando llega a este punto y no encuentra más código 'Se acaba la ejecución. End If End Function