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)