Ensanchar la fila que contenga un cero que no sea negro

En la aplicación del otro día que se trataba de poner los ceros de un rango de suma en color verde si era en gastos o rojo si era en ingresos, lo hemos hecho con Dante Amor y funciona muy bien con formato condicional, ahora el problema lo tengo en que pretendo que al colocarte encima de uno de esos ceros la fila se ensanche y la celda que tiene el nombre se ponga de color con el siguiente código funciona bien

If ActiveCell.Value = 0 Then
Range("E" & R & ":P" & R).RowHeight = 48 'ensancha la fila
Range("D" & R & ":P" & R).VerticalAlignment = xlCenter 'centra los datos
Range("D" & R & ":D" & R).Interior.ColorIndex = 27 'pone color

El inconveniente es que lo hace también en las celdas con cero que no son de color y las celdas vacías.

He probado estos códigos y no me funcionan, al mirar el formato de las celdas tanto las que tienen el texto de color como las normales el formato es el mismo "Automatic", estas formulas las he sacado con el generador de macros

' If ActiveCell.Value = 0 And Not ActiveCell.Font.ColorIndex = 1 Then     Este seria color negro
'If Not ActiveCell.Font.ColorIndex = xlAutomatic Then    Este color automatic
'If ActiveCell.Value = 0 And ActiveCell.Font.ThemeColor = xlThemeColorLight1 Then

Los proximos con condiciones
'If ActiveCell.Value = 0 And ActiveCell.FormatConditions = True Then
'If ActiveCell.Value = 0 And Rng.FormatConditions.Font.ColorIndex Then
'If ActiveCell.Range("E" & R & ":P" & R).boolean = True Then

2 respuestas

Respuesta
1

Te paso el código para ensachar la fila, cuando es 0 y NO tiene aplicado el formato condicional.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Target, Range("E3:P500")) Is Nothing Then
    If Target.CountLarge > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    'ActiveSheet.Unprotect "eddyvargas"
    With Range("D2:P500")
      .Interior.ColorIndex = 0
      .VerticalAlignment = xlBottom   'datos a la derecha
      .EntireRow.AutoFit             'pone tamaño normal de la fila
    End With
    With Target
      If .Value = 0 And .DisplayFormat.Font.Color <> 0 Then
        .RowHeight = 48                                               'ensancha la fila
        Range("D" & .Row & ":P" & .Row).VerticalAlignment = xlCenter  'centra los datos
        Range("D" & .Row).Interior.ColorIndex = 4                     'pone la celda de la Columna D en verde
      End If
    End With
    'ActiveSheet.protect "eddyvargas"
  End If
End Sub

---

Nota: La sentencia With en Excel VBA se utiliza para tener acceso a todas las propiedades y métodos del objeto mencionado. De esa manera no es necesario escribirlo varias veces, con mencionarlo una vez es suficiente.

Consejo: Te recomiendo, que comentes las líneas para desproteger y proteger la hoja, ya sabes cómo funciona, así que mientras estás desarrollando será más práctico trabajar.

Respuesta
1

Debes tener presente que las filas tienen un alto para TODAS las celdas de esa fila... y las columnas tienen un ancho para TODAS las celdas de esa columna.

Por ej, si miro la imagen de tu última consulta, en fila 22 hay 3 celdas con 0... no podrás darle un alto mayor solo a una de ellas.

Hola gracias por la respuesta pero si que quiero que se ensanche la fila completa pero solo si el cero de la celda que clico es distinto a negro, con dos formatos condicionales en el rango gastos se ponen verdes cuando la suma es superior a cero , y en el rango ingresos se pone roja

Gracias

Ah, bien. Muchas veces nos piden cambios de tamaño en celdas individuales, de ahí mi aclaración.

Bueno, entonces dejaré que Dante te la responda ya que él tiene tu libro y entre Uds ya saben cómo lo resolvieron. Si durante el día de hoy no lo hace enviame mañana tu libro para ver los formatos condicionales o macro.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas