¿Cómo actualizar automáticamente todas las celdas?

TEngo la siguiente macro:

Private Sub Worksheet_SelectionChange(ByVal target As range)
If range("F" & target.Row) = "ANULADO" Or range("f" & target.Row) = "ANULADA" Then
target.HorizontalAlignment = xlCenter
End If

End Sub

Pero sucede que la hoja está oculta y extrae los datos de otras hojas mediante fórmulas, por decir algo en la celda f1 está la fórmula 'hoja 1'! A1, y esta macro solo centra cada vez que me coloco sobre la celda que debe centrar existe algún método para actualizar la macro cada cierto tiempo, sin que tenga que seleccionar la celda o la hoja.

1 respuesta

Respuesta
2

Te anexo un ejemplo, no tengo todo el contexto de lo que quieres aplicar, pero según tu ejemplo, lo que tienes que hacer es poner la siguiente macro en los eventos de la hoja1, ya que el evento change, está ocurriendo en la hoja1, por lo que entiendo estás modificando la celda A1, el dato que está en la cela A1 se refleja en la celda B2 de la hoja2:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Sheets("Hoja2").Range("B2").HorizontalAlignment = xlCenter
    End If
End Sub

Recuerda, la macro va en los eventos de la hoja1. Cambia "B2" por la celda que quieras centrar.


Otra opción es que pongas el evento Calculate, en la hoja2, esto significa que cada vez que un dato de una fórmula se modifique, se ejecute la macro:

Private Sub Worksheet_Calculate()
'Por.Dante Amor
    [B2].HorizontalAlignment = xlCenter
End Sub

En cualquiera de las 2 opciones la hoja2 puede estar oculta, solamente cambia B2 por la celda, o rango de celdas o fila o columna que quieras centrar.

Saludos. Dante Amor

Si es lo que necesitas.

Gracias Dante Amor,

Me encantaría cambiar mi formula el evento change a calculate.

Pero no puedo cambiarlo, bien te explico, lo que he asignado a mi macro es que cada vez que en la columna F se ingrese el valor "Anulada" o "Anulado", esta casilla quede centrada, pero ahora los valores de la hoja 2 se extraen de la hoja 1, ¿cuál sería la macro para cambiar el evento?

¿Qué ingresen el valor "Anulada" o "Anulado" en cuál hoja?

Puedes explicarlo con imágenes y ejemplos

Muy bien, esta es la fórmula ingresada en la hoja 2, en la casilla F1.

=SI(O('Hoja 1'!E1="anulado";'Hoja 1'!E1="anulada");MAYUSC('Hoja 1'!E1);'Hoja 1'!E1).

La fórmula continúa hacia abajo de la misma manera. En la columna E de la hoja 1, ingresaré los datos, y cada vez que ingrese la palabra "anulado" o "anulada", los celdas que contengan esa palabra en la columna F de la hoja 2 queden centradas. Pero necesito que se centren cada vez que se actualiza una de las formulas.

Pon lo siguiente en tus eventos de la hoja2

Private Sub Worksheet_Calculate()
    Range("F:F").HorizontalAlignment = xlCenter
End Sub

Pero necesito que se alineen solo si contienen la palabra "anulado" o "anulada".

Prueba así

Private Sub Worksheet_Calculate()
    Set h2 = Sheets("Hoja2")
    For i = 1 To h2.Range("F" & Rows.Count).End(xlUp).Row
        If UCase(h2.Cells(i, "F")) = "ANULADO" Or UCase(h2.Cells(i, "F")) = "ANULADA" Then
            h2.Cells(i, "F").HorizontalAlignment = xlCenter
        End If
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas