Excel VBA cilpas: tālāk, dariet laiku, dariet līdz, katram (ar piemēriem)

Lai maksimāli izmantotu Excel un VBA, jums jāzina, kā efektīvi izmantot cilpas.

VBA cilpas ļauj jums iziet objektu/vērtību kopu un analizēt to pa vienam. Katrai cilpai varat veikt arī īpašus uzdevumus.

Šeit ir vienkāršs piemērs VBA cilpu izmantošanai programmā Excel.

Pieņemsim, ka jums ir datu kopa un vēlaties izcelt visas šūnas vienādās rindās. Varat izmantot VBA cilpu, lai izietu diapazonu un analizētu katru šūnu rindas numuru. Ja tas izrādās vienmērīgs, jūs piešķirat tam krāsu, pretējā gadījumā atstājat to tādu, kāds tas ir.

Tagad to, protams, ir ļoti vienkārši atkārtot Excel VBA (un to var izdarīt arī, izmantojot nosacīto formatējumu).

Reālajā dzīvē jūs varat darīt daudz vairāk, izmantojot Excel VBA cilpas, kas var palīdzēt automatizēt uzdevumus.

Šeit ir daži praktiskāki piemēri, kur VBA cilpas var būt noderīgas:

  • Pārvietojieties pa šūnu diapazonu un analizējiet katru šūnu (iezīmējiet šūnas ar konkrētu tekstu).
  • Pārlūkojiet visas darblapas un dariet kaut ko ar katru (piemēram, aizsargājiet/noņemiet aizsardzību).
  • Pārlūkojiet visas atvērtās darbgrāmatas (un saglabājiet katru darbgrāmatu vai aizveriet visas, izņemot aktīvo darbgrāmatu).
  • Atkārtojiet visas šūnas rakstzīmes (un iegūstiet skaitlisko daļu no virknes).
  • Izsekojiet visas masīva vērtības.
  • Pārlūkojiet visas diagrammas/objektus (un piešķiriet apmali vai mainiet fona krāsu).

Lai vislabāk izmantotu cilpas programmā Excel VBA, jums jāzina par dažādajiem esošajiem veidiem un katra pareizā sintakse.

Šajā apmācībā es parādīšu dažāda veida Excel VBA cilpas un apskatīšu dažus piemērus katrai cilpai

Piezīme: Šī būs milzīga apmācība, kurā es mēģināšu detalizēti aprakstīt katru VBA cilpu. Es iesaku jums pievienot šo lapu grāmatzīmēm turpmākai uzziņai.

Ja jūs interesē vienkāršs VBA apguves veids, apskatiet manu Tiešsaistes Excel VBA apmācība.

Nākamajai cilpai

Cilne “Tālāk” ļauj noteiktā reižu laikā iziet koda bloku.

Piemēram, ja es lūdzu manuāli pievienot veselus skaitļus no 1 līdz 10, jūs pievienotu pirmos divus ciparus, pēc tam pievienotu rezultātam trešo skaitli, pēc tam pievienotu rezultātam ceturto skaitli, kā tā tālāk …

Vai ne?

Tāda pati loģika tiek izmantota VBA cilnē For Next.

Jūs norādāt cik reizes ciklu vēlaties palaist, kā arī norādiet, ko vēlaties, lai kods darītu katru reizi, kad cilpa tiek palaista.

Zemāk ir cilnes For Next sintakse:

Skaitītājam = no sākuma līdz beigām [soļa vērtība] [izpildāmā koda bloks] nākamais [skaitītājs]

Cilnē For Next varat izmantot skaitītāju (vai jebkuru mainīgo), kas tiks izmantots cilpas palaišanai. Šis skaitītājs ļauj palaist šo cilpu nepieciešamo reižu skaitu.

Piemēram, ja es vēlos pievienot pirmos 10 pozitīvos veselos skaitļus, mana skaitītāja vērtība būtu no 1 līdz 10.

Apskatīsim dažus piemērus, lai labāk izprastu, kā darbojas cilpa Tālāk.

1. piemērs. Pirmo 10 pozitīvo veselu skaitļu pievienošana

Zemāk ir kods, kas pievienos pirmos 10 pozitīvos veselos skaitļus, izmantojot cilni Nākamajai.

Pēc tam tiks parādīts ziņojumu lodziņš, kurā parādīta šo skaitļu summa.

Sub AddNumbers () Dim kopā kā vesels skaitlis Dim skaits kā vesels skaitlis kopā = 0 skaitīšanai = 1 līdz 10 kopā = kopā + skaits

Šajā kodā vērtība Kopā ir iestatīta uz 0, pirms nokļūst cilnē Nākamā.

Kad tas nonāk cilpā, tas saglabā kopējo vērtību pēc katras cilpas. Tātad pēc pirmās cilpas, kad skaitītājs ir 1, “kopējā” vērtība kļūst par 1, un pēc otrās cilpas tā kļūst par 3 (1+2) utt.

Visbeidzot, kad cikls beidzas, mainīgajam “Kopā” ir pirmo 10 pozitīvo veselu skaitļu summa.

Pēc tam MsgBox vienkārši parāda rezultātu ziņojumu lodziņā.

2. piemērs. Pirmo 5 pat pozitīvo veselu skaitļu pievienošana

Lai apkopotu pirmos piecus pat pozitīvos veselos skaitļus (ti, 2,4,6,8 un 10), jums ir nepieciešams līdzīgs kods ar nosacījumu, lai ņemtu vērā tikai pāra skaitļus un nepāra skaitļus.

Šeit ir kods, kas to darīs:

Sub AddEvenNumbers () Dim kopā kā vesels skaitlis Dim skaits kā vesels skaitlis Kopā = 0 Skaitam = 2 līdz 10 2. solis kopā = Kopā + skaits Nākamais skaits MsgBox Kopējais beigu apakšdaļa

Ņemiet vērā, ka skaitīšanas vērtību mēs sākām no 2 un izmantojām arī “2. solis‘.

Kad lietojat “2. darbība”, tas liek kodam palielināt skaitļa vērtību par 2 katru reizi, kad tiek palaista cilpa.

Tātad skaitīšanas vērtība sākas no 2 un pēc tam kļūst par 4, 6, 8 un 10, kad notiek atkārtošana.

PIEZĪME. Vēl viens veids, kā to izdarīt, varētu palaist cilpu no 1 līdz 10 un cikla ietvaros pārbaudīt, vai skaitlis ir pāra vai nepāra. Tomēr, izmantojot Step, šajā gadījumā ir efektīvāks veids, jo cilpa neprasa darboties 10 reizes, bet tikai 5 reizes.

Step vērtība var būt arī negatīva. Šādā gadījumā skaitītājs sākas ar augstāku vērtību un turpina samazināties par norādīto soļa vērtību.

3. piemērs - Sērijas numura ievadīšana atlasītajās šūnās

Varat arī izmantot cilni Nākamajai, lai pārietu uz objektu kolekciju (piemēram, šūnas vai darblapas vai darbgrāmatas),

Šeit ir piemērs, kas ātri ievada sērijas numurus visās atlasītajās šūnās.

Sub EnterSerialNumber () Dim Rng kā diapazons Dim Counter kā vesels skaitlis Dim RowCount kā vesels skaitlis Rng = Atlase RowCount = Rng.Rows.Count For Counter = 1 RowCount ActiveCell.Offset (Counter - 1, 0) .Value = Counter Next Counter End Sub

Iepriekš minētais kods vispirms saskaita atlasīto rindu skaitu un pēc tam piešķir šo vērtību mainīgajam RowCount. Pēc tam mēs izpildām cilpu no “1 līdz RowCount”.

Ņemiet vērā arī to, ka, tā kā atlasē var būt neierobežots rindu skaits, mēs esam iestatījuši mainīgo Rng uz atlasi (ar rindu “Set Rng = Selection”). Tagad mēs varam izmantot mainīgo “Rng”, lai atsauktos uz mūsu koda izvēli.

4. piemērs - aizsargājiet visas darblapas aktīvajā darbgrāmatā

Varat izmantot cilni “Nākamajam”, lai izietu visas darblapas aktīvajā darbgrāmatā un aizsargātu (vai neaizsargātu) katru darblapu.

Zemāk ir kods, kas to darīs:

Sub ProtectWorksheets () Dim i kā vesels skaitlis i = 1 uz ActiveWorkbook. Darblapas. Saskaitīt darblapas (i). Aizsargāt nākamo i End Sub

Iepriekš minētais kods uzskaita lapu skaitu, izmantojot ActiveWorkbook.Worksheets.Count. Tas VBA norāda, cik reizes cilpa ir jāizpilda.

Katrā gadījumā tas atsaucas uz Ith darbgrāmatu (izmantojot darblapas (i)) un aizsargā to.

Šo pašu kodu varat izmantot arī darblapu aizsardzības noņemšanai. Vienkārši nomainiet līniju Darblapas (i). Aizsargāt uz Darblapas (i). UnProtect.

Iekļautas cilpas “Nākamām”

Varat izmantot ligzdotas cilnes “Nākamam”, lai programmā Excel veiktu sarežģītāku automatizāciju. Ligzdota cilne “Nākamam” nozīmētu, ka cilnē “Nākamai” ir cilne “Nākamam”.

Ļaujiet man parādīt, kā to izmantot, izmantojot piemēru.

Pieņemsim, ka manā sistēmā ir atvērtas 5 darbgrāmatas un es vēlos aizsargāt visas darblapas visās šajās darbgrāmatās.

Zemāk ir kods, kas to darīs:

Sub ProtectWorksheets () Dim i Kā vesels skaitlis Dim j Kā vesels skaitlis i = 1 darbgrāmatām. Skaits j = 1 darbgrāmatām (i). Darba lapas. Skaitīt darbgrāmatas (i). Darblapas (j). Aizsargāt nākamo j Nākamais i Beigu apakšdaļa

Iepriekš minētā ir ligzdota nākamā cilpa, jo mēs esam izmantojuši vienu cilni Nākamā citā.

Paziņojumi “EXIT For” sadaļā “Nākamās cilpas”

Paziņojums “Exit For” ļauj pilnībā iziet no cilpas “For Next”.

Varat to izmantot gadījumos, kad vēlaties, lai cilne Nākotne beigtos, kad tiek izpildīts noteikts nosacījums.

Ņemsim piemēru, kur A slejā ir skaitļu kopa un visus negatīvos skaitļus vēlaties izcelt ar sarkanu fontu. Šajā gadījumā mums ir jāanalizē katra šūna pēc tās vērtības un pēc tam attiecīgi jāmaina fonta krāsa.

Bet, lai padarītu kodu efektīvāku, mēs vispirms varam pārbaudīt, vai sarakstā ir kādas negatīvas vērtības. Ja nav negatīvu vērtību, mēs varam izmantot paziņojumu Iziet, lai vienkārši izietu no koda.

Zemāk ir kods, kas to dara:

Sub HghlightNegative () Dim Rng kā diapazona kopa Rng = Diapazons ("A1", Diapazons ("A1"). Beigas (xlDown)) Skaitītājs = Rng. Skaitlis i = 1 līdz skaitītājam Ja darblapas funkcija.Min (Rng)> = 0 Pēc tam izejiet uz Ja Rng (i). Vērtība <0 Tad Rng (i). Fonts. Krāsa = vb

Kad jūs izmantojat paziņojumu “Iziet uz” ligzdotajā “Nākamajā” cilpā, tas iznāks no cilpas, kurā tas tiek izpildīts, un turpinās izpildīt nākamo koda rindu aiz cilnes Par nākamo.

Piemēram, zemāk esošajā kodā paziņojums “Iziet” izvedīs jūs no iekšējās cilpas, bet ārējā cilpa turpinās darboties.

Sub SampleCode () I = 1 līdz 10 J = 1 līdz 10 Iziet Nākamajam J Nākamais i Beigu apakšdaļa

Darīt, kamēr cilpa

Cilne “Darīt” ļauj pārbaudīt nosacījumu un palaist ciklu, kamēr šis nosacījums ir izpildīts (vai ir PATIESA).

Cilnē Do Do Loop ir divu veidu sintakse.

Veiciet [kamēr nosacījums] [izpildāmā koda bloks] cilpa

un

Veiciet [izpildāmā koda bloka] ciklu [nosacījums]

Atšķirība starp šiem diviem ir tas, ka pirmajā gadījumā nosacījums Kam vispirms tiek pārbaudīts pirms koda bloka izpildes, bet otrajā gadījumā vispirms tiek izpildīts koda bloks un pēc tam tiek pārbaudīts nosacījums Kamēr.

Tas nozīmē, ka, ja nosacījums Kaut gan ir nepareizs, abos gadījumos kods tiks palaists vismaz vienu reizi otrajā gadījumā (jo nosacījums “Kamēr” tiek pārbaudīts pēc koda vienreizējas izpildes).

Tagad apskatīsim dažus Do Do cilpu izmantošanas piemērus VBA.

1. piemērs - pievienojiet pirmos 10 pozitīvos veselos skaitļus, izmantojot VBA

Pieņemsim, ka vēlaties pievienot pirmos desmit pozitīvos veselos skaitļus, izmantojot cilni Do Kaut VBA.

Lai to izdarītu, varat izmantot ciklu Do Do, līdz nākamais skaitlis ir mazāks vai vienāds ar 10. Tiklīdz skaitlis ir lielāks par 1o, jūsu cilpa apstāsies.

Šeit ir VBA kods, kas palaidīs šo cilni Do Do un parādīs rezultātu ziņojumu lodziņā.

Sub AddFirst10PositiveIntegers () Dim i kā vesels skaitlis i = 1 Darīt, kamēr i <= 10 Rezultāts = Rezultāts + i i = i + 1 cilpa MsgBox Rezultāta beigu apakšdaļa

Iepriekš minētā cilpa turpina darboties, līdz “i” vērtība kļūst par 11. Tiklīdz tā kļūst par 11, cilpa beidzas (kā nosacījums Kam kļūst par nepatiesu).

Cikla ietvaros mēs esam izmantojuši rezultātu mainīgo, kuram ir galīgā vērtība. Kad cikls ir pabeigts, ziņojumu lodziņā tiek parādīta mainīgā “Rezultāts” vērtība.

2. piemērs. Ievadiet pašreizējā mēneša datumus

Pieņemsim, ka darblapas slejā vēlaties ievadīt visus pašreizējā mēneša datumus.

To var izdarīt, izmantojot šādu cilnes Do Do ciklu:

Sub EnterCurrentMonthDates () Dim CMDate kā datums Dim i Kā vesels skaitlis i = 0 CMDate = DateSerial (Gads (Datums), Mēnesis (Datums), 1) Darīt Mēnesi (CMDate) = Mēneša (Datuma) diapazons ("A1"). Nobīde (i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Iepriekš minētais kods ievadītu visus datumus darblapas pirmajā kolonnā (sākot no A1). Cilpas turpinās, līdz mainīgā “CMDate” mēneša vērtība sakrīt ar pašreizējā mēneša vērtību.

Iziet vai paziņojums

Lai izietu no cilpas, varat izmantot paziņojumu Exit Do. Tiklīdz kods izpilda rindu “Exit Do”, tas iziet no cikla “Do Do” un nodod vadību nākamajai rindai tūlīt pēc cilpas.

Piemēram, ja vēlaties ievadīt tikai pirmos 10 datumus, varat iziet no cikla, tiklīdz ir ievadīti pirmie 10 datumi.

Zemāk esošais kods to darīs:

Sub EnterCurrentMonthDates () Dim CMDate kā datums Dim i Kā vesels skaitlis i = 0 CMDate = DateSerial (gads (datums), mēnesis (datums), 1) darīt, kamēr mēnesis (CMDate) = mēneša (datuma) diapazons ("A1"). Nobīde (i, 0) = CMDate i = i + 1 Ja i> = 10, tad izejiet Vai CMDate = CMDate + 1 cilpas beigu apakšdaļa

Iepriekš minētajā kodā IF paziņojums tiek izmantots, lai pārbaudītu, vai i vērtība ir lielāka par 10 vai nē. Tiklīdz “i” vērtība kļūst par 10, tiek izpildīts paziņojums Exit Do un cikls beidzas.

Darīt līdz cilpai

Cilnes “Darīt līdz” ir ļoti līdzīgas cilnēm “Darīt”.

Sadaļā “Darīt” cilpa darbojas, līdz tiek izpildīts dotais nosacījums, savukārt “Darīt līdz” - cilpa darbojas, līdz tiek izpildīts noteiktais nosacījums.

Cilnē Do Do Loop ir divu veidu sintakse.

Veiciet [līdz nosacījumam] [izpildāmā koda bloks]

un

Veiciet [izpildāmā koda bloka] ciklu [līdz nosacījumam]

Atšķirība starp šiem diviem aspektiem ir tāda, ka pirmajā gadījumā pirms koda bloka izpildes vispirms tiek pārbaudīts nosacījums Līdz, un otrajā gadījumā vispirms tiek izpildīts koda bloks un pēc tam tiek pārbaudīts nosacījums Līdz.

Tas nozīmē, ka, ja nosacījums “Līdz” ir TRUE, ir abi gadījumi, otrajā gadījumā kods tiks palaists vismaz vienu reizi (jo nosacījums “Līdz” tiek pārbaudīts pēc koda vienreizējas izpildes).

Tagad aplūkosim dažus Do Do cilpu izmantošanas piemērus VBA.

Piezīme. Visi “Līdz” piemēri ir tādi paši kā “Darīt”. Tie ir pārveidoti, lai parādītu, kā darbojas cilne Do līdz.

1. piemērs - pievienojiet pirmos 10 pozitīvos veselos skaitļus, izmantojot VBA

Pieņemsim, ka vēlaties pievienot pirmos desmit pozitīvos veselos skaitļus, izmantojot cilni Do līdz VBA.

Lai to izdarītu, cilpa jāpalaiž, līdz nākamais skaitlis ir mazāks vai vienāds ar 10. Tiklīdz skaitlis ir lielāks par 1o, jūsu cilpa apstāsies.

Šeit ir VBA kods, kas darbinās šo cilpu un parādīs rezultātu ziņojumu lodziņā.

Sub AddFirst10PositiveIntegers () Dim i Kā vesels skaitlis i = 1 Vai līdz i> 10 Rezultāts = Rezultāts + i i = i + 1 cilpa MsgBox Rezultāta beigu apakšdaļa

Iepriekš minētā cilpa turpina darboties, līdz “i” vērtība kļūst par 11. Tiklīdz tā kļūst par 11, cilpa beidzas (jo nosacījums “Līdz” kļūst par patiesu).

2. piemērs. Ievadiet pašreizējā mēneša datumus

Pieņemsim, ka darblapas slejā vēlaties ievadīt visus pašreizējā mēneša datumus.

To var izdarīt, izmantojot šādu cikla kodu Do Do:

Sub EnterCurrentMonthDates () Dim CMDate kā datums Dim i Kā vesels skaitlis i = 0 CMDate = DateSerial (gads (datums), mēnesis (datums), 1) līdz mēnesim (CMDate) mēneša (datuma) diapazons ("A1"). Nobīde ( i, 0) = CMDate i = i + 1 CMDate = CMDate + 1 Loop End Sub

Iepriekš minētais kods ievadītu visus datumus darblapas pirmajā kolonnā (sākot no A1). Cikls turpinās, līdz mainīgā CMDate mēnesis nav vienāds ar kārtējā mēneša mēnesi.

Iziet vai paziņojums

Lai izietu no cilpas, varat izmantot paziņojumu “Iziet”.

Tiklīdz kods izpilda rindu “Exit Do”, tas iziet no cikla “Do Do” un nodod vadību nākamajai rindai uzreiz pēc cilpas.

Piemēram, ja vēlaties ievadīt tikai pirmos 10 datumus, varat iziet no cikla, tiklīdz ir ievadīti pirmie 10 datumi.

Zemāk esošais kods to darīs:

Sub EnterCurrentMonthDates () Dim CMDate kā datums Dim i Kā vesels skaitlis i = 0 CMDate = DateSerial (gads (datums), mēnesis (datums), 1) līdz mēnesim (CMDate) mēneša (datuma) diapazons ("A1"). Nobīde ( i, 0) = CMDate i = i + 1 Ja i> = 10, tad izejiet Vai CMDate = CMDate + 1 cilpas beigu apakšdaļa

Iepriekš minētajā kodā, tiklīdz “i” vērtība kļūst par 10, tiek izpildīts paziņojums Exit Do un cikls beidzas.

Katram

VBA programmā varat apskatīt kolekciju kopu, izmantojot cilpu “Katram”.

Šeit ir daži kolekciju piemēri programmā Excel VBA:

  • Visu atvērto darbgrāmatu kolekcija.
  • Visu darblapu kolekcija darbgrāmatā.
  • Visu šūnu kolekcija atlasīto šūnu diapazonā.
  • Visu darbgrāmatas diagrammu vai formu kolekcija.

Izmantojot cilpu “Katram”, varat iziet cauri katram kolekcijas objektam un veikt dažas darbības.

Piemēram, varat apskatīt visas darbgrāmatas darblapas un tās aizsargāt, vai arī iziet visas atlasītās šūnas un mainīt formatējumu.

Izmantojot cilpu “Katram” (saukta arī par “Katram nākamajam”), jums nav jāzina, cik objektu ir kolekcijā.

Cilne “Katram” automātiski izietu cauri katram objektam un veiktu norādīto darbību. Piemēram, ja vēlaties aizsargāt visas darbgrāmatas darblapas, kods būtu vienāds neatkarīgi no tā, vai jums ir darbgrāmata ar 3 darblapām vai 30 darblapām.

Šeit ir Excel VBA cilpas katrai nākamajai sintakse.

Katram kolekcijas elementam [izpildāmā koda bloks] Nākamais [elements]

Tagad apskatīsim pāris piemērus par katras cilpas izmantošanu programmā Excel.

1. piemērs. Iet cauri visām darbgrāmatas darblapām (un aizsargājiet to)

Pieņemsim, ka jums ir darbgrāmata, kurā vēlaties aizsargāt visas darblapas.

Zemāk par katru nākamo cilpu to var viegli izdarīt:

Sub ProtectSheets () Dim ws kā darblapa katram ws ActiveWorkbook. Darblapas ws. Aizsargāt Next ws End Sub

Iepriekš minētajā kodā mēs esam definējuši mainīgo “ws” kā darblapas objektu. Tas norāda VBA, ka “ws” kodā ir jāinterpretē kā darblapas objekts.

Tagad mēs izmantojam paziņojumu “Katram”, lai izietu cauri katram “ws” (kas ir darblapas objekts) visu aktīvās darbgrāmatas darblapu kolekcijā (ko sniedz ActiveWorkbook.Worksheets).

Ņemiet vērā, ka atšķirībā no citām cilpām, kurās mēs esam mēģinājuši aizsargāt visas darbgrāmatas darblapas, šeit mums nav jāuztraucas par to, cik darblapas ir darbgrāmatā.

Mums tie nav jāskaita, lai palaistu cilpu. Par katru cilpu nodrošina, ka visi objekti tiek analizēti pa vienam.

2. piemērs. Pārskatiet visas atvērtās darbgrāmatas (un saglabājiet visas)

Ja vienlaikus strādājat ar vairākām darbgrāmatām, var noderēt iespēja saglabāt visas šīs darbgrāmatas vienlaikus.

Zemāk esošais VBA kods to var izdarīt mūsu vietā:

Sub SaveAllWorkbooks () Dim wb kā darbgrāmata katrai wb darbgrāmatās wb. Saglabāt nākamo wb End Sub

Ņemiet vērā, ka šajā kodā jūs nesaņemat uzvedni, kurā tiek prasīts saglabāt darbgrāmatu noteiktā vietā (ja to saglabājat pirmo reizi).

Tas to saglabā noklusējuma mapē (manā gadījumā tā bija mape “Dokumenti”). Šis kods vislabāk darbojas, ja šie faili jau ir saglabāti un veicat izmaiņas un vēlaties ātri saglabāt visas darbgrāmatas.

3. piemērs. Iziet visas atlasītās šūnas (iezīmējiet negatīvās vērtības)

Izmantojot cilpu “Katram”, varat cilpot cauri visām šūnām noteiktā diapazonā vai atlasītajā diapazonā.

Tas var būt noderīgi, ja vēlaties analizēt katru šūnu un veikt darbību, pamatojoties uz to.

Piemēram, zemāk ir kods, kas izies visas atlasītās šūnas un mainīs šūnu krāsu ar negatīvām vērtībām uz sarkanu.

Sub HighlightNegativeCells () Dim Cll kā diapazons katrai atlasītajai Cll, ja Cll.Value <0, tad Cll.Interior.Color = vbSarkanais beigas, ja nākamais Cll End Sub

(Ņemiet vērā, ka esmu izmantojis Cll kā šūnu īsu mainīgo nosaukumu. Ieteicams neizmantot tādu objektu nosaukumus kā Sheets vai Range kā mainīgo nosaukumus)

Iepriekš minētajā kodā cilne Katram nākamajam iziet atlases šūnu kolekciju. IF paziņojumu izmanto, lai noteiktu, vai šūnas vērtība ir negatīva vai nē. Šādā gadījumā šūnai tiek piešķirta sarkana iekšējā krāsa, pretējā gadījumā tā tiek pārvietota uz nākamo šūnu.

Ja jums nav atlases un vēlaties, lai VBA atlasītu visas aizpildītās šūnas kolonnā, sākot no konkrētas šūnas (tāpat kā mēs izmantojam Control + Shift + lejupvērstās bultiņas taustiņu, lai atlasītu visas aizpildītās šūnas), varat izmantojiet zemāk esošo kodu:

Sub HighlightNegativeCells () Dim Cll kā diapazons Dim Rng kā diapazona kopa Rng = Diapazons ("A1", diapazons ("A1"). Beigas (xlDown)) Katrai Cll In Rng Ja Cll.Value <0 Tad Cll.Interior.Color = vbSarkanais beigas Ja nākamais Cll Beigu apakš

Iepriekš minētajā piemērā nav svarīgi, cik daudz aizpildīto šūnu ir. Tas sāksies no šūnas A1 un analizēs visas blakus esošās aizpildītās šūnas kolonnā.

Jums arī nav jāatlasa šūna A1. Jūs varat izvēlēties jebkuru tālu šūnu, un, kad kods darbojas, tā joprojām ņems vērā visas A slejas šūnas (sākot no A1) un iekrāsos negatīvās šūnas.

Paziņojums “Iziet”

Lai izietu no cilpas, varat izmantot paziņojumu “Iziet” cilnē “Katram nākamajam”. Tas parasti tiek darīts, ja ir izpildīts kāds īpašs nosacījums.

Piemēram, 3. piemērā, kad mēs ejam cauri šūnu kopai, var būt efektīvāk pārbaudīt, vai ir kādas negatīvas vērtības. Ja nav negatīvu vērtību, mēs varam vienkārši iziet no cilpas un ietaupīt kādu VBA apstrādes laiku.

Zemāk ir VBA kods, kas to darīs:

Sub HighlightNegativeCells () Dim Cll kā diapazons katrai atlasītajai cilnei If WorksheetFunction.Min (Selection)> = 0, tad iziet, ja Cll.Value <0 Tad Cll.Interior.Color = vbSarkanais beigas, ja nākamais Cll End Sub

Kur ievietot VBA kodu

Vai vēlaties uzzināt, kur jūsu Excel darbgrāmatā atrodas VBA kods?

Programmai Excel ir VBA aizmugure, ko sauc par VBA redaktoru. Jums ir nepieciešams kopēt un ielīmēt kodu VB redaktora moduļa koda logā.

Lai to izdarītu, veiciet tālāk norādītās darbības.

  1. Dodieties uz cilni Izstrādātājs.
  2. Noklikšķiniet uz opcijas Visual Basic. Tas atvērs VB redaktoru aizmugurē.
  3. VB redaktora Project Explorer rūtī ar peles labo pogu noklikšķiniet uz jebkura darbgrāmatas objekta, kurā vēlaties ievietot kodu. Ja neredzat Project Explorer, dodieties uz cilni Skats un noklikšķiniet uz Project Explorer.
  4. Dodieties uz Ievietot un noklikšķiniet uz moduļa. Tādējādi jūsu darbgrāmatai tiks ievietots moduļa objekts.
  5. Kopējiet un ielīmējiet kodu moduļa logā.

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave