Impostare “Allinea al centro nelle colonne” in base al valore di una cella

A Giovanna piace usare l’impostazione “Allinea al centro nelle colonne” nella scheda Allineamento della finestra di dialogo Formato celle per centrare le informazioni su celle non unite. Si chiede, tuttavia, se esista un modo in cui può utilizzare il contenuto di una cella per impostare su quante celle debba verificarsi la centratura. Ad esempio, se ha il numero 4 nella cella A1, la centratura dovrebbe essere su 4 celle (B1:E1), ma se lo cambia in 5, la centratura dovrebbe essere su 5 celle (B1:F1).

L’unico modo per farlo è attraverso l’uso di una macro. Poiché è possibile modificare il valore nella cella A1, la macro deve essere eseguita ogni volta che si apporta una modifica alla cartella di lavoro e quindi determinare se tale modifica è stata apportata o meno nella cella A1. In tal caso, può apportare modifiche alle celle nella riga.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim sWidth As String
    Dim sStartCell As String
    Dim iWidth As Integer
    Dim r As Range
    Dim sTemp As String

    sWidth = "$A$1"
    sStartCell = "$B$1"

    If Target.Address = sWidth Then
        iWidth = Range(sWidth).Value
        If iWidth > 1 Then
            sTemp = Right(sStartCell, 1)
            sTemp = sTemp & ":" & sTemp
            Range(sTemp).HorizontalAlignment = xlGeneral

            Set r = Range(sStartCell)
            Set r = r.Resize(1, iWidth)
            r.HorizontalAlignment = xlCenterAcrossSelection
        End If
    End If
End Sub

Si noti che questa macro deve essere inserita nel foglio Codice del foglio di lavoro su cui si desidera modificare l’impostazione. Ogni volta che viene apportata una modifica al foglio di lavoro, la macro viene eseguita automaticamente. Per farlo funzionare a seconda delle tue esigenze, dovresti cambiare gli indirizzi assegnati alle variabili sWidth e sStartCell. sWidth è impostata sulla cella che contiene il numero delle colonne su cui vuoi centrare. sStartCell è impostato sulla prima cella a sinistra dell’intervallo in cui deve verificarsi la centratura.

La macro cattura tutto ciò che è nella tua cella sWidth e lo inserisce nella variabile iWidth. Se questo valore è maggiore di 1, si verificano le modifiche di allineamento (non ha senso centrare su una selezione larga meno di 2 colonne). L’allineamento di tutte le celle è ripristinato su “generale”, quindi viene definito un intervallo ampio quanto specificato, a partire dalla cella indicata in sStartCell. Per questo intervallo, l’allineamento è impostato su xlCenterAcrossSelection per fornire i risultati desiderati.

Una versione più “compressa” della stessa macro può essere la seguente:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

Tags: , , , , , , , , , , ,

Ti è stato utile?