Com s'utilitza VBA per a cada bucle? (amb exemples d'Excel)

Excel VBA per a cada bucle

VBA per a cada bucle recorre tota la col·lecció d'objectes o objectes i realitza un conjunt d'activitats similars. Es tindrà en compte tots els objectes especificats disponibles i realitzarà activitats instruïdes en cada objecte.

A VBA és obligatori entendre els bucles de VBA. Un bucle us permet realitzar el mateix tipus d’activitat per a moltes cel·les o objectes d’excel. A l’article d’avui ens centrarem en el mecanisme Per a cada bucle.

Sintaxi

Per a cada bucle es pot recórrer tota la col·lecció d'objectes o elements. Una col·lecció no és res més que "Tots els llibres de treball oberts", "Tots els fulls de treball d'un llibre de treball", "Tota la col·lecció de formes i gràfics del llibre de treball".

Vegem la sintaxi.

Per cadascú  Objecte a la col·lecció Què fer? Pròxim Objecte 

Per exemple, teniu 10 fulls al vostre llibre i voleu amagar tots els fulls de càlcul, excepte aquell en què us trobeu. Podeu amagar-vos manualment, sí, però què passa si teniu 100 fulls així, no és avorrit -Consumir tasca a fer. Podeu fer-ho utilitzant per a cada bucle.

Com s'utilitza per a cada bucle a VBA? (Exemples)

Podeu descarregar aquesta VBA per a cada plantilla de bucle aquí - VBA per a cada plantilla de bucle

Exemple 1: inseriu el mateix text a tots els fulls

Veurem com utilitzar FOR CADA a VBA amb un exemple senzill. Suposem que teniu 5 fulls de treball en un llibre i voleu inserir la paraula "Hola" a tots els fulls de treball de la cel·la A1.

Ho podem fer amb FOR CADA LOOP. Una cosa que heu de recordar aquí és que realment realitzem aquesta activitat a cada full de càlcul, no al mateix full de càlcul. Seguiu els passos següents per escriure el codi VBA.

Pas 1: Inicieu la macro excel.

Codi:

 Sub per a_Cada_Exemple1 () Finalitzar Sub 

Pas 2: Ja que ens referim als fulls de treball declarem la variable com a "full de treball".

Codi:

 Sub For_Each_Example1 () Atenueu Ws com a final del full de treball Sub 

Pas 3: Ara, utilitzant FOR CADA LOOP, hem de referir cada full de treball al llibre de treball actiu.

Codi:

 Sub For_Each_Example1 () Atenueu Ws com a full de treball per a cada Ws a ActiveWorkbook. Fulls de treball Següents Ws End Sub 

Pas 4: Ara escriviu el que volem fer a cada full de treball. A cada full de treball, hem de posar la paraula "Hola" a la cel·la A1.

Codi:

 Sub For_Each_Example1 () Atenueu Ws com a full de treball per a cada Ws d'ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hola" Següent Ws End Sub 

Pas 5: Ara executeu aquest codi manualment mitjançant l'opció o premeu la tecla de drecera F5, no importa quants fulls tingueu, inserirà la paraula "Hola" a tots els fulls de treball.

Exemple núm. 2: amaga tots els fulls

Com es va dir anteriorment a la publicació, què passa si teniu centenars de fulls per amagar, excepte el que us trobeu? Utilitzant Per a cada bucle, podem amagar tots els fulls en excel.

Pas 1: Inicieu la macro amb el vostre nom.

Codi:

 Sub per a_Cada_Exemple2 () Finalitzar Sub 

Pas 2: Declareu la variable com a "Ws”.

Codi:

 Sub For_Each_Example2 () Atenuar Ws com a final del full de treball Sub 

Pas 3: Ara, a cada full de treball, el que heu de fer és amagar el full.

Codi:

 Sub For_Each_Example2 () Atenua Ws com a full de treball per a cada Ws a ActiveWorkbook.Whesheets Ws.Visible = xlSheetVeryHidden Següent Ws End Sub 

Pas 4: Però si executeu el codi anterior, intentarà amagar tots els fulls, però Excel necessita almenys un full per ser visible. Per tant, hem de dir quin full no amagar.

Codi:

 Sub For_Each_Example2 () Atenueu Ws com a full de treball per a cada Ws a ActiveWorkbook.Whesheets if Ws.Name "Main Sheet" llavors Ws.Visible = xlSheetVeryHidden End Si el següent Ws End Sub 

El símbol de l’operador significa no és igual a VBA.

Per tant, el codi diu que quan feu un recorregut per tots els fulls de treball del llibre de treball actiu només s’amaga si el nom del full no és igual al nom del full principal.

Això es pot fer mitjançant la instrucció IF a VBA. Escriviu el codi com a IF Ws.Name "Full principal". A continuació, amagueu-lo o si és igual al nom del full "Full principal", no amagueu-lo.

Pas 5: Ara executeu el codi amb la tecla F5 o manualment i, a continuació, amagarà tot el full de treball, excepte el que es denomina "Full principal".

Exemple 3: mostra tots els fulls

Hem vist com amagar tots els fulls, excepte aquell en què estem. De la mateixa manera, també podem mostrar tots els fulls de treball.

Només hem de canviar el codi de xlSheetVeryHidden a xlSheetVisible.

Codi:

 Sub For_Each_Example3 () Atenueu Ws com a full de treball per a cada Ws a ActiveWorkbook.Whesheets Ws.Visible = xlSheetVisible Següent Ws End Sub 

Aquí no necessitem la condició IF perquè estem amagant tots els fulls. Si no voleu mostrar cap full específic, podeu utilitzar la condició IF i proporcionar el nom del full.

Exemple # 4: protegir i desprotegir tots els fulls

Protegiu tots els fulls: Podem protegir tots els fulls del llibre amb només un tros de codi. Tot el codi és el mateix que hem de fer aquí en lloc de Ws. Visible hem de posar el codi Ws. Protegiu i escriviu la contrasenya.

Codi:

 Sub For_Each_Example4 () Atenueu Ws com a full de treball per a cada Ws a ActiveWorkbook. Fulls de treball Ws.Protect Password: = "Excel @ 2019" Següent Ws End Sub 

Desprotegiu tots els fulls de càlcul: En una nota similar, mitjançant vba també podem desprotegir tots els fulls protegits al llibre. Només hem de posar la paraula Desprotegir i contrasenya.

Codi:

 Sub For_Each_Example6 () Dim Ws com a full de treball per a cada Ws a ActiveWorkbook.Whesheets Ws.Unprotect Password: = "Excel @ 2019" Següent Ws End Sub 

Coses que cal recordar

  • Cadascun és per a la col·lecció d’objectes.
  • Es consideraran tots els objectes especificats al llibre de treball especificat.
  • Tot declarant la variable necessitem a quin objecte ens referim. Per exemple, full de treball, quadern de treball, gràfic, etc.