Hola Elsa espero que estés bien, fíjate que tengo una duda bien grande, como puedo efectuar que el selector de excel solo se mueva por las celdas que no tengo bloqueadas, a modo de que cuando llegue a la ultima celda desbloqueada, vuelva a la primera, ¿si me explico?, por tu tiempo, muchas gracias y por tu conocimiento, felicidades.
Esta respuesta fue dejada hace un tiempo en el tablón, creo que perteneció al experto Fejoal. La colocas en el Editor, en el objeto Hoja donde quieras que esto se ejecute. Faltan declarar las variables y deberás ajustarla a tus rangos. 'Define aquí el rango amplio que 'comprenda a las celdas habilitadas: Const SupIzq = "C1" Const InfDer = "I20" '------------------ gracias Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) fila = Range(SupIzq).Row FilZ = Range(InfDer).Row ColA = Range(SupIzq).Column ColZ = Range(InfDer).Column 'Controla que selección actual esté dentro del rango indicado If Application.Intersect(Range(SupIzq, InfDer), ActiveCell) Is Nothing Then Range(SupIzq).Select End If FilT = ActiveCell.Row ColT = ActiveCell.Column ColsChk = 0 'Busca celda permitida desde la actual en adelante 88: If ActiveCell.Locked Then Application.ScreenUpdating = False Application.EnableEvents = False For ActCol = ColT To ColZ QueFila = IIf(ColsChk = 0, FilT, fila) For ActFil = QueFila To FilZ ActiveCell.Offset(1).Select If ActiveCell.Locked = False Then GoTo Final Next ActFil ColsChk = ColsChk + 1 ActiveCell.Offset(fila - FilZ, 1).Select Next ActCol Else GoTo Final End If 'Busca celda permitida desde inicio de rango amplio If ActiveCell.Locked Then Range(SupIzq).Select ColT = ActiveCell.Column GoTo 88 End If Final: Application.EnableEvents = True Application.ScreenUpdating = True End Sub Espero lo puedas adaptar a tus datos, sino me avisas.
Esta complicadillo para mi porque estoy en pañales en cuestión de macros y visual, pero apenas pueda lo aplico y si tengo duda te escribo, ¿ok?. Muchos saludos