Eliminar contenido y bordes de celdas de un rango
Roland
-
ccm81 Mensajes publicados 11033 Estado Miembro -
ccm81 Mensajes publicados 11033 Estado Miembro -
Hola,
Me gustaría mediante una macro VBA eliminar el contenido y los bordes de las celdas de una parte del rango M37:AJ147, desde la celda que contiene el valor más alto de la columna AJ, hasta el final de este rango. Esto sin eliminar filas.
Ejemplo:
en el rango M37:AJ147 en la columna AJ, la celda AJ100 contiene el valor más alto
entonces el contenido y los bordes de M100:AJ147 se eliminan, manteniendo el mismo color de fondo.
Gracias
Configuración: Windows 7 / Firefox 42.0
Me gustaría mediante una macro VBA eliminar el contenido y los bordes de las celdas de una parte del rango M37:AJ147, desde la celda que contiene el valor más alto de la columna AJ, hasta el final de este rango. Esto sin eliminar filas.
Ejemplo:
en el rango M37:AJ147 en la columna AJ, la celda AJ100 contiene el valor más alto
entonces el contenido y los bordes de M100:AJ147 se eliminan, manteniendo el mismo color de fondo.
Gracias
Configuración: Windows 7 / Firefox 42.0
Enlaces relacionados:
- [Excel 2010] Llenar celda según contenido de otra
- Protección de los bordes de una celda
- borrar una celda en función del contenido de otra
- insertar contenido de una celda en el pie de página
- Eliminar el contenido de una celda con lista desplegable
- VIA55 borrar contenido de celda cuando otra esté llena
13 respuestas
-
Hola
Una macro para adaptar
Const plage = "A2:G22" Const coco = "G" Sub ok() Dim paef As Range, m, obj As Object Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long m = Application.WorksheetFunction.Max(Columns(coco)) Set obj = Columns(coco).Find(m, , , xlWhole) lideb = obj.Row lifin = Range(Split(plage, ":")(1)).Row codeb = Range(Split(plage, ":")(0)).Column cofin = Range(Split(plage, ":")(1)).Column Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin)) paef.Value = "" paef.Borders.LineStyle = xlNone End Sub
Cdlmnt -
Hola
Gracias por tu respuesta.
Cuando intento aplicar la macro, aparece el siguiente mensaje: "Error de compilación: Se esperaba End Sub"
La macro es la siguiente:
Const plage = "M37:AJ147"
Const coco = "AJ"
Sub ok()
Dim paef As Range, m, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Columns(coco))
Set obj = Columns(coco).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(plage, ":")(1)).Row
codeb = Range(Split(plage, ":")(0)).Column
cofin = Range(Split(plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
End Sub
¿Cómo resolver este problema? -
Cuando quiero aplicar la macro, aparece el siguiente mensaje: "Error de compilación: Se esperaba End Sub"
Raro, en mi caso, he copiado tu código en un módulo, pude compilarlo y ejecutarlo sin errores.
¿No tendrás otras macros en tu módulo?
Si no, envía tu archivo a través de cjoint.com
Saludos. -
Hola CCM81
Adjunto el archivo. Estoy en Excel 2000.
Al hacer clic en Herramientas Macros aparece una lista de 3 macros ("Deuxnuminsertion", "Numéros", "OK"), un clic en Editor de Visual Basic permite ver los módulos, de los cuales dos contienen macros (Módulo 6: "Deuxnuminsertion"; Módulo 5: "Numéros").
Tengo 3 macros en la lista de macros y 2 en los módulos. ¿El problema viene de ahí?
Atentamente
http://www.cjoint.com/c/EKvopxAkGIY -
Elimina estas líneas, que declaran un procedimiento del cual no hay ni el cuerpo (el código propiamente dicho) ni el final (end sub)
Sub Deuxnuminsertion()
'
' Deuxnuminsertion Macro
' Macro grabada el 21/11/2015 por Roland
'
'
RQ. Tienes algunos módulos vacíos que puedes eliminar
Cdlmnt -
Hola CCM 81
He realizado las modificaciones presentadas en el archivo adjunto. Aparece el mensaje "Error de ejecución 91 - variable u objeto de bloque With no definida".
El depurador resalta en amarillo la línea "libed = objeto.Row".
Debo haber hecho en algún lugar una operación que bloquea la macro.
Saludos cordiales
http://www.cjoint.com/c/EKxksb7HEgY -
Dim paef As Range, m As Date, obj As Object
Cdlmnt -
Hola CCM81
La macro funciona pero hay un problema expuesto en el archivo adjunto.
Cordialmente
http://www.cjoint.com/c/EKywbVeRHiY -
1. En cuanto al color, añades la línea subrayada
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
2. En cuanto al error, creo que proviene del hecho de que en AI160 tienes un valor que no tiene nada que ver con las fechas del inicio de columna.
Prueba estoConst Plage = "M37:AI147"
Const coco = "AI1:AI150"
Sub ok()
Dim paef As Range, m As Date, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Range(codate))
Set obj = Range(codate).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(Plage, ":")(1)).Row
codeb = Range(Split(Plage, ":")(0)).Column
cofin = Range(Split(Plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
Cdlmnt -
Hola ccm81
Para la supresión que buscas, siempre tenía mensajes de error cuando la rellenación a partir de la línea 837 estaba presente. Al final, moví el rango M162:AI2004 para dejar este rango vacío. La macro funciona de esta manera (¿por qué?).
La macro transforma bien el color de fondo de las celdas coloreadas a fondo blanco.
Atentamente -
Había un error aquí (¡un pegado prematuro!)
Const Plage = "M37:AI147"
Const coco = "AI1:AI150"
Sub ok()
Dim paef As Range, m As Date, obj As Object
Dim codeb As Long, cofin As Long, lideb As Long, lifin As Long
m = Application.WorksheetFunction.Max(Range(coco))
Set obj = Range(coco).Find(m, , , xlWhole)
lideb = obj.Row
lifin = Range(Split(Plage, ":")(1)).Row
codeb = Range(Split(Plage, ":")(0)).Column
cofin = Range(Split(Plage, ":")(1)).Column
Set paef = Range(Cells(lideb, codeb), Cells(lifin, cofin))
paef.Value = ""
paef.Borders.LineStyle = xlNone
paef.Interior.ColorIndex = 2
End Sub
Cdlmnt -
Hola ccm81
El mensaje de error 1004 aparece: "No se puede leer la propiedad de la clase Worksheet.función"
Saludos -
¿Has definido bien el rango coco?
Const coco = "AI1:AI150"