Problema con formato de celdas combinadas

Tengo una serie de celdas combinadas (concretamente: O20 a P21, O22 a P24, O26 a P27, O28 a P30, O32 a P33 y O34 a P36) Quiero que, cuando otra celda de la misma hoja tenga el valor "1", el formato de estas celdas combinadas sea con borde estilo doble línea. En el formulario que llama a dicha hoja he colocado el siguiente código:

If Sheets("mes").Range("c38") = 1 Then

    Range("O20:P24,O26:P30,O32:P36").Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone
   Selection.Borders(xlDiagonalUp).LineStyle = xlNone
   With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
  End With
  With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
  End With
  With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
  End With
  With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
  End With
  Selection.Borders(xlInsideVertical).LineStyle = xlNone
  With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlDouble
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .Weight = xlThick
  End With
Range("A1").Select  'para colocar el cursor en la primera celda de la hoja.

El problema es que, si bien algunas celdas adoptan el formato con el borde doble, otras (o mejor dicho, parte de ellas) no lo hacen (concretamente, las celdas O20, O22, O24, O26, O28, O30 y O32, no adoptan dicho formato).

Añadir que, dichas celdas tienen formato condicional para el relleno y el tipo y color de fuente que sí funciona correctamente. He intentado aplicar también el formato condicional para los bordes; pero, en primer lugar, no permite la doble línea y, además, en algunas celdas (que forman parte de las celdas combinadas) adoptaba el formato cuando no debía hacerlo...

¿Me podéis ayudar para resolver este problema?

1 Respuesta

Respuesta
1

Prueba haciendo referencia a la celda que da inicio al rango así:

Si tenemos: Range("O20:P24, O26:P30, O32:P36").Select

usa:  Range("O20,O26,O32").Select

Gracias por tu pronta respuesta! Lo he intentado, pero sigue habiendo un problema... Me pone el formato en "casi" toda la celda combinada, pero, precisamente en la que indica el inicio del rango (para este caso serían las celdas O20, O26 y O32) no le aplica el formato, con lo que se ve el borde en todo menos en la parte superior e izquierda de dichas celdas...

Revisé el código como lo tienes y si funciona, podría ser por el lado de los formatos condicionales a veces se corrompen, prueba creando una nueva hoja y trasladando las fórmulas no copies la hoja haz una nueva, si no podrías enviármelo a [email protected] y lo reviso.

En efecto, Erik, el problema era el formato condicional, pero no por que se hubiera corrompido, sino que le había puesto como borde "ninguno". Una vez eliminado, funcionó bien. Ahora bien, lo pruebo, funciona y lo que hago es proteger el código para visualización (así evito que nadie pueda cambiar nada accidentalmente -sobre todo yo... XD)

Cuando vuelvo a probarlo, me da el siguiente mensaje:

"Se ha producido el error 1004 en tiempo de ejecución:

No se puede aplicar la propiedad LineStyle de la clase Border."

¡Y se queda tan pancho! Cuando le doy a "depurar", se queda en la primera línea de código después de la selección del rango:

Range("O20,O26,O32").Select
   Selection.Borders(xlDiagonalDown).LineStyle = xlNone  'Aquí me arroja el error

o bien, si quiero quitar los bordes (que sí que lo son sí...)

Range("O20,O26,O32").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone ' me arroja el error aquí...

Pero ¡Qué demonios fallaaaaaaaaaaaaaaaaaaaaaaaa!

Muchas gracias por tu ayuda.

Quítale ese par de líneas de código solo dicen que el borde abajo diagonal lo deja en nulo y me cuentas

Gracias una vez más por tu respuesta Erik y te pido disculpas por no haber respondido antes, pero no he podido (llego ahora del trabajo) Te diré, he quitado esas líneas (que lo cierto es que no servían para nada) pero ahora me "arrastra" el error a la siguiente línea de código. Estoy pensando que, tal vez deba quitar todos los formatos condicionales de esas celdas y pasarlos a código. Voy a hacer la prueba y te cuento...

Acabo de descubrir el problema, pero no sé si tendrá solución. El código me arroja error cuando protejo la hoja o el libro. Si están sin proteger, funciona correctamente, pero en cuanto los protejo deja de hacerlo y me dice que no puede aplicar las propiedades. El problema es que tengo que proteger la hoja forzosamente para evitar que me puedan modificar las fórmulas, ya que, aunque las bloqueo, me dice excel que no funcionará el bloqueo si no protejo la hoja...

¿Se te ocurre alguna solución?

Muchas gracias una vez más por tu ayuda.

Tendrías que desproteger la hoja al inicio de la subrutina y al final de ella volverla a proteger

¡Solucionado! Basta con que, a la hora de proteger la hoja, marque la casilla de verificación de "permitir a los usuarios aplicar formato a las celdas desbloqueadas" (Espero que a nadie le dé por cambiar dicho formato XD)

Muchísimas gracias por tu ayuda.

Genial!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas