Una cartella di lavoro di Excel può contenere un numero qualsiasi di singoli fogli di lavoro. Mentre ti muovi all’interno dei vari fogli di lavoro, Excel tiene traccia di quale cella è selezionata in quale foglio di lavoro. Quando si passa a un nuovo foglio di lavoro, Excel rende attiva l’ultima cella attiva all’interno di quel foglio di lavoro. Pertanto, se hai selezionato l’ultima cella F9 nel foglio di lavoro, quella è quella selezionata quando visualizzi nuovamente il foglio di lavoro, indipendentemente da ciò che è stato selezionato nel foglio di lavoro precedente.

Per alcune cartelle di lavoro, tuttavia, potresti volere che Excel renda la cella attiva nel foglio di lavoro selezionato uguale alla cella attiva nel foglio di lavoro precedente. Non esiste un’impostazione per farlo automaticamente in Excel, ma ci sono un paio di cose che puoi provare. Una cosa è seguire questi passaggi:

  1. Tenere premuto il tasto Ctrl mentre si fa clic sulla scheda del foglio di lavoro a cui si desidera accedere. Ora dovrebbero essere selezionate due schede del foglio di lavoro; quello con il nome in grassetto è quello effettivamente visualizzato sullo schermo.

  2. Fare clic sulla scheda per il foglio di lavoro a cui si desidera accedere. Entrambe le schede dovrebbero essere ancora selezionate, ma solo quella su cui hai fatto clic dovrebbe avere il nome in grassetto.

  3. Tieni premuto il tasto Ctrl mentre fai clic sulla scheda del foglio di lavoro che hai appena lasciato.

Questi passaggi funzionano perché stai “raggruppando” fogli di lavoro. Quando lo fai, Excel rende le celle selezionate uguali per tutti i fogli di lavoro nel gruppo.

Ricordarsi di usare la sequenza Ctrl-clic-clic-Ctrl può essere complicato, nella migliore delle ipotesi. È anche una sequenza che può essere irta di pericoli, perché se dimentichi di eseguire il passaggio 3, potresti finire per apportare modifiche involontarie ai tuoi fogli di lavoro. (Mentre lavori con fogli di lavoro raggruppati, qualsiasi modifica apportata su un foglio viene modificata in modo simile su tutti i fogli del gruppo.)

Questi tre passaggi non possono essere automatizzati con le macro, ma puoi adottare un approccio diverso con una macro per eseguire la stessa operazione. La prima cosa che devi fare è dichiarare una variabile pubblica ovunque all’interno di un modulo della cartella di lavoro, come mostrato qui:

Public sAddress As String

Questa variabile, sAddress, verrà utilizzata per memorizzare l’indirizzo corrente della cella attiva. Nel modulo “ThisWorkbook” della cartella di lavoro, aggiungi queste due macro:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

sAddress = ActiveCell.Address End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If sAddress > "" Then Sh.Range(sAddress).Select End Sub

La prima macro viene eseguita automaticamente da Excel ogni volta che la cella selezionata cambia. Tutto ciò che fa è recuperare l’indirizzo di qualsiasi cella sia attiva e quindi memorizzare quell’indirizzo nella variabile sAddress.

La seconda macro viene eseguita automaticamente ogni volta che viene attivata una cartella di lavoro.

Controlla per vedere se c’è qualcosa memorizzato in sAddress. Se è presente, seleziona qualsiasi indirizzo di cella memorizzato lì. Il codice di errore è necessario nel caso in cui selezioni un foglio che non utilizza celle, come un foglio grafico.

Questo approccio macro funziona alla grande se desideri apportare questa modifica alla navigazione solo in una o due cartelle di lavoro. Se preferisci fare la modifica “a livello di sistema” (per così dire), devi essere un po ‘più complesso nel tuo approccio alla macro. In questo caso, è necessario inserire il codice nella cartella di lavoro Personal.xls in modo che venga caricato ogni volta che si avvia Excel. In particolare, inserire il codice riportato di seguito in un nuovo modulo di classe della cartella di lavoro Personal.xls. Questo modulo di classe dovrebbe avere un nome descrittivo, come ClassXLApp:

Public WithEvents gobjXLApp As Excel.Application Private mstrAddress As String

Private Sub gobjXLApp_WorkbookActivate(ByVal Wb As Excel.Workbook)

On Error Resume Next     If mstrAddress > "" Then ActiveSheet.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetActivate(ByVal Sh As Object)

On Error Resume Next     If mstrAddress > "" Then Sh.Range(mstrAddress).Select End Sub

Private Sub gobjXLApp_SheetSelectionChange(ByVal Sh As Object, _   ByVal Target As Excel.Range)

mstrAddress = Selection.Address End Sub

Successivamente, apri il modulo “ThisWorkbook” di Personal.xls e copia il codice seguente:

Private mobjXLApp As New ClassXLApp

Private Sub Workbook_Open()

Set mobjXLApp.gobjXLApp = Excel.Application End Sub

Dopo aver salvato Personal.xls e riavviato Excel, l’intervallo nella prima cartella di lavoro che si apre verrà selezionato nel foglio di lavoro successivo selezionato.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (3205) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: