VBA per ogni esempio (riferimento rapido)

Questo tutorial ti mostrerà esempi di utilizzo di For Each Loop in VBA. Clicca qui per saperne di più sui loop in generale.

Per ogni ciclo

Il For Each Loop ti consente di eseguire il loop through ogni oggetto in una collezione:

  • Tutte le celle in un intervallo
  • Tutti i fogli di lavoro in una cartella di lavoro
  • Tutte le cartelle di lavoro aperte
  • Tutte le forme in un foglio di lavoro
  • Tutti gli elementi in un array
  • e altro!

Per ciascuno: esempi di base

Questi esempi dimostreranno come impostare i cicli For Each per scorrere diversi tipi di oggetti.

Passa attraverso le celle

Questa procedura eseguirà il ciclo di ogni cella nell'intervallo A1: A10, impostando la cella a destra uguale a se stessa.

12345678 Sub ForEachCell()Cella fioca come intervalloPer ogni cella in fogli ("Foglio1"). Intervallo ("A1:A10")Cell.Offset(0, 1).value = Cell.valueCella successivaFine sottotitolo

Passa attraverso i fogli

Questa procedura scorrerà ogni foglio in una cartella di lavoro, scoprendo ogni foglio.

12345678 Sub ForEachSheets()Dim ws come foglio di lavoroPer ogni ws in fogliws.Visible = TrueFoglio successivoFine sottotitolo

Passa attraverso le cartelle di lavoro

Questa procedura scorrerà ogni cartella di lavoro, chiudendola.

12345678 Sub ForEachWorkbooks()Dim wb come cartella di lavoroPer ogni wb nelle cartelle di lavorowb.Chiudiwb successivoFine sottotitolo

Loop attraverso le forme

Questa procedura scorrerà ogni forma in Foglio1, eliminando ciascuna di esse.

12345678 Sub ForEachShape()Dim Shp come formaPer ogni Shp in fogli ("Foglio1"). FormeShp.EliminaSuccessivo ShpFine sottotitolo

Loop attraverso grafici

Questa procedura scorrerà ogni Grafico in Foglio1, eliminandone uno.

12345678 Sub ForEachCharts()Dim cht As ChartObjectPer ogni cht In Sheets("Sheet1").ChartObjectscht.EliminaAvantiFine sottotitolo

Passa attraverso le tabelle pivot

Questa procedura scorrerà ogni tabella pivot in Sheet1, cancellandole

12345678 Sub ForEachPivotTables()Dim pvt come tabella pivotPer ogni pvt in fogli ("Foglio1"). Tabelle pivotpvt.ClearTablepvt Next successivoFine sottotitolo

Scorri tabelle

Questa procedura eseguirà il ciclo di ogni tabella in Sheet1, eliminando ciascuno di essi.

12345678 Sub ForEachTables()Dim tbl As ListObjectPer ogni tbl In Sheets("Sheet1").ListObjectstbl.Eliminaprossimo tblFine sottotitolo

Passa attraverso gli elementi nell'array

Questa procedura scorrerà ogni elemento in un array, visualizzerà ogni valore in un msgbox,

12345678910 Sub ForEachItemInArray()Dim arrValue As VariantDim Item come variantearrValue = Array("Articolo 1", "Articolo 2", "Articolo 3")Per ogni elemento in arrValueOggetto MsgBoxArticolo successivoFine sottotitolo

Passa attraverso i numeri

Questa procedura scorrerà ogni numero in un array, visualizzerà ogni valore in un msgbox,

12345678910111213 Sub ForEachNumberInNumbers()Dim arrNumber (da 1 a 3) come numero interoDim num come varianteNumeroArr(1) = 10arrNumero(2) = 20arrNumero(3) = 30Per ogni numero in arrNumberNumero casella messaggiNumero successivoFine sottotitolo

Per ogni generatore di loop

Gli esempi in questo articolo sono stati costruiti con il Generatore di loop nel nostro Componente aggiuntivo VBA: AutoMacro.

Il Generatore di loop rende molto facile generare codice per scorrere gli oggetti. AutoMacro contiene anche molti altri Generatori di codice, un vasto Libreria di codici, e potente Strumenti di codifica.

Per ciascuno - Se

Puoi anche utilizzare le istruzioni If all'interno dei cicli per verificare se gli oggetti soddisfano determinati criteri, eseguendo azioni solo su quegli oggetti che soddisfano i criteri. Ecco un esempio di ciclo attraverso ogni cella in un intervallo:

Per ogni cella nell'intervallo - Se

1234567891011121314 Sub If_Loop()Dim Cell come intervalloPer ogni cella nell'intervallo ("A2: A6")Se Cell.Value > 0 AlloraCell.Offset(0, 1).Value = "Positivo"ElseIf Cell.Value < 0 AlloraCell.Offset(0, 1).Value = "Negativo"AltroCell.Offset(0, 1).Value = "Zero"Finisci seCella successivaFine sottotitolo

Per ogni esempio comune

Chiudi tutte le cartelle di lavoro

Questa procedura chiuderà tutte le cartelle di lavoro aperte, salvando le modifiche.

123456789 Sub CloseAllWorkbooks()Dim wb come cartella di lavoroPer ogni wb nelle cartelle di lavorowb.Chiudi SaveChanges:=Truewb successivoFine sottotitolo

Nascondi tutti i fogli

Questa procedura nasconderà tutti i fogli di lavoro.

12345678 Sub NascondiTuttiFogli()Dim ws come foglio di lavoroPer ogni ws in fogliws.Visible = xlSheetHiddenAvanti wFine sottotitolo

Scopri tutti i fogli

Questa procedura mostrerà tutti i fogli di lavoro.

12345678 Sub Mostra tutti i fogli()Dim ws come foglio di lavoroPer ogni ws in fogliws.Visible = xlSheetVisibleAvanti wFine sottotitolo

Proteggi tutti i fogli

Questa procedura proteggerà tutti i fogli di lavoro.

12345678 Sub ProtectAllSheets()Dim ws come foglio di lavoroPer ogni ws in fogliws.Proteggi password:="… "Avanti wFine sottotitolo

Annulla protezione di tutti i fogli

Questa procedura rimuoverà la protezione di tutti i fogli di lavoro.

12345678 Sub UnprotectAllSheets()Dim ws come foglio di lavoroPer ogni ws in fogliws.Unprotect Password:="… "Avanti wFine sottotitolo

Elimina tutte le forme su tutti i fogli di lavoro

Questa procedura eliminerà tutte le forme in una cartella di lavoro.

123456789101112 Sub DeleteAllShapesOnAllWorksheets()Dim Sheet come foglio di lavoroDim Shp come formaPer ogni ws in fogliPer ogni nave in ws.ShapesShp.EliminaSuccessivo ShpAvanti wFine sottotitolo

Aggiorna tutte le tabelle pivot

Questa procedura aggiornerà tutte le tabelle pivot su un foglio.

12345678 Sub RefreshAllPivotTables()Dim pvt come tabella pivotPer ogni pvt in fogli ("Foglio1"). Tabelle pivotpvt.RefreshTableprossimo pvtFine sottotitolo

Utilizzo di For Each in Access VBA

Il ciclo For Each funziona allo stesso modo in Access VBA come in Excel VBA. L'esempio seguente rimuoverà tutte le tabelle nel database corrente.

123456789 Sotto RimuoviTutte le Tabelle()Dim tdf come TableDefDim dbs come databaseImposta dbs = CurrentDbPer ogni tdf in dbs.TableDefsDoCmd.DeleteObject tdf.NameCiclo continuoImposta dbs = NienteFine sottotitolo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave