- 9/28/2020
- 3 minuti per leggere
-
- s
- C
- A
- Si applica a: Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Office Excel 2002, Excel 97
Nota
Office 365 ProPlus viene rinominato in Microsoft 365 Apps for enterprise. Per maggiori informazioni su questo cambiamento, leggete questo post sul blog.
Sommario
Microsoft Excel 2002 e versioni successive di Excel eliminano le celle in un ciclo “For Each…Next” in un modo diverso rispetto a Microsoft Excel 97 e versioni precedenti di Excel.
Questo articolo descrive le differenze e fornisce una macro di Visual Basic for Applications che illustra come eliminare le celle in un ciclo.
Più informazioni
Microsoft fornisce esempi di programmazione solo a scopo illustrativo, senza garanzia espressa o implicita. Questo include, ma non è limitato a, le garanzie implicite di commerciabilità o idoneità per uno scopo particolare. Questo articolo presuppone che abbiate familiarità con il linguaggio di programmazione oggetto della dimostrazione e con gli strumenti utilizzati per creare ed eseguire il debug delle procedure. I tecnici del supporto Microsoft possono aiutare a spiegare la funzionalità di una particolare procedura. Tuttavia, non modificheranno questi esempi per fornire funzionalità aggiuntive o costruire procedure per soddisfare le vostre specifiche esigenze.
Dati di esempio
Per utilizzare la macro in questo articolo, digitate i seguenti dati di esempio in un foglio di lavoro:
A1: a B1: 1A2: b B2: 2A3: x B3: 3A4: x B4: 4A5: c B5: 5A6: x B6: 6A7: d B7: 7A8: x B8: 8A9: x B9: 9A10: e B10: 10
Macro campione
In un nuovo modulo macro, digitate la seguente macro.
Comportamento della macro di esempio in Excel 2002 e nelle versioni successive di Excel
Quando si esegue la macro DeleteCells in Excel 2002 e nelle versioni successive di Excel, solo le righe 3, 6 e 8 vengono eliminate. Anche se le righe 4 e 9 contengono una “x” nella colonna A, la macro non cancella le righe. I risultati della macro sono i seguenti:
A1: a B1: 1A2: b B2: 2A3: x B3: 4A4: c B4: 5A5: d B5: 7A6: x B6: 9A7: e B7: 10
Quando Microsoft Excel cancella la riga 3, tutte le celle salgono di una riga. Per esempio, la cella A3 assume il contenuto della cella A4, la cella A4 assume il contenuto della cella A5, e così via. Dopo che il ciclo For Each…Next valuta una cella, valuta la cella successiva; pertanto, quando le celle vengono spostate, possono essere saltate dal ciclo.
Comportamento della macro di esempio in Microsoft Excel 5.0 e Microsoft Excel 7.0
Quando si esegue la macro DeleteCells in Excel 5.0 e in Excel 7.0, la macro elimina tutte le righe che contengono una “x”. I risultati della macro sono i seguenti:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Quando la riga 3 viene cancellata, tutte le celle salgono di una riga. Quindi, la cella A3 assume il contenuto della cella A4, la cella A4 assume il contenuto della cella A5, e così via.
Tuttavia, a differenza del comportamento del ciclo in Excel 2002 e nelle versioni successive di Excel, quando il ciclo “For Each…Next” valuta una cella in Excel 5.0 e in Excel 7.0, il ciclo rivaluta la cella se viene eliminata nel ciclo. Pertanto, le celle non vengono saltate.
Metodo consigliato per utilizzare un ciclo per eliminare celle
Utilizzate la seguente macro quando volete utilizzare un ciclo per eliminare celle:
I risultati di questa macro in tutte le versioni di Excel sono i seguenti:
A1: a B1: 1A2: b B2: 2A3: c B3: 5A4: d B4: 7A5: e B5: 10
Metodo supplementare per utilizzare un ciclo per eliminare celle
Questo è un metodo alternativo a quello mostrato sopra. Questo metodo produce gli stessi risultati
.