Riccardo ha riscontrato un problema durante lo sviluppo di una macro che imposta lo schermo per l’input dell’utente. Le colonne A:G devono sempre rimanere sullo schermo, quindi la sua macro blocca quelle colonne. Quindi emette un comando per passare alla colonna Z per iniziare l’input. Questo piazza le colonne T:Z a destra delle colonne congelate A:G. Quello che Riccardo vuole veramente è che le colonne Z:AF appaiano a destra di A:G, ma non sa come farlo.
Esistono diversi modi per ottenere i risultati desiderati. Il primo è semplicemente spostarsi “oltre” l’obiettivo desiderato, quindi spostarsi di nuovo su di esso, come nella macro seguente:
Sub GotoCol1()
With Application
ActiveWindow.FreezePanes = False
Range("H1").Select
ActiveWindow.FreezePanes = True
.Goto Range("IV1")
.Goto Range("Z1")
End With
End Sub
Le righe di codice importanti sono quelle che utilizzano il metodo Goto. Il primo salto è all’ultima cella della prima riga e il secondo salto torna al vero obiettivo, Z1. Muovendosi in questo modo, la colonna Z finisce appena a destra dell’intervallo congelato, A:G.
Anche se funziona perfettamente, una soluzione migliore sarebbe quella di utilizzare il parametro Scroll con il metodo Goto. Considera il seguente esempio:
Sub GotoCol2()
With Application
ActiveWindow.FreezePanes = False
Range("H1").Select
ActiveWindow.FreezePanes = True
.Goto Reference:=Range("Z1"), Scroll:=True
End With
End Sub
Il parametro Scroll è opzionale con il metodo Goto: il valore predefinito è False. Se lo imposti su True, Goto scorre la finestra in modo che l’angolo superiore sinistro dell’intervallo di destinazione (Z1) venga visualizzato nell’angolo superiore sinistro della finestra.