Bucle...

Hola! Estoy o intento aprender sobre macros en Excel y me topado con una macro que no soy capaz de codificar. Ojala usted pueda ayudarme. Se trata de lo siguiente:
Cuando D6 = "Cuota", entonces la macro se fije en la columna AG, desde la fila 16 hasta la 196.
Aquellas celdas cuyo valor sea "SI", desproteja la celda situada en la misma fila, pero 30 columnas más atrás (COLUMNA C). Supongo que aquí se hará eso de Offset (-30,0)...
Y así desde AG16 a AG196.
Resumo, D6 = Cuota. ¿AG16 = SI? Entonces C16 desprotegida (Selection.Locked = True). ¿AG16 no es igual a SI? Entonces C16 protegida (Selection.Locked = False). Lo mismo con AG17... 18.... Hasta 196.
Por último (de verdad siento ser tan insistente) no entiendo por qué a veces crea problemas el código de Selection.Locked.
Si me ayudas con esto es la Leche tío ! Millones de gracias por leerme !
1

1 respuesta

Respuesta
1
Si mira Offset(0,0).select
Est para dirigir a partir de la celda actica ActiveCell
los negativos ciertamente son para atrás o para arriba en el caso de filas, lo que pasa es que tu pusiste Offset(-30,0) hay, le estas indicando treina filas hacia arriba el Offset(Fila, Columna). Select
Primero son las filas, luego las columnas... tienes que aprendesr a usar los if y los bucles.
Seria mucha la información para este mensaje..
Mejor te recomiendo mi sitio
www.expertosmacrosexcel.es.tl
Hay encontraras todas tus dudas..
Saludos a y regálame click en la publicidad hee...
Si ! Me di cuenta más tarde que lo puse mal, no me di cuenta. Pero quisiera aprender cómo hacer la macro que no soy capaz de codificar. Gracias también por el link!
Si es muy largo el código y eso, te pediría o rogaría por favor que por lo menos me estructures un poco cómo sería y así guiarme un poco, te lo suplico ! (A cambio de clic's en la publi ajjajaja)
Sub MyMacro()
ActiveSheet.Protect
If range("d6").value = "Cuota" Then     'Validas si la celda d6 dice Cuota
Range("ag16").select                   'Seleccionas la celda ag16 si se cumple la condicion.
End if                                            'Terminas la condicion
While ActiveCell.Value <> ""       'Utilizas el Bucle While para repetir proceso
If ActiveCell.Value = "Si" Then     'Validas la Celda Activa
ActiveSheet.UnProtect 'Si la celda activa es "si" desbloqueas toda la hoja
End If                                         'Terminas el if dentro del bucle
ActiveSheet,Protect                          'Protejes la hoja
ActiveCell.Offset(1,0).select             'Bajas una filapara que se vuelva a validar
Wend                                               'Terminas el Bucle while
Range("d6").select                             'Regresas al rango inicial
MsgBox("Proceso terminado con exito")   'Mensaje de Porceso terminado
End sub                                                      'Terminas la macro
saludos y acuérdate de los click.. je je

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas