Counter ng VBA | Paano Lumikha ng Counter sa Excel VBA? (na may mga Halimbawa)

Excel VBA Counter

Mayroong iba't ibang mga pag-andar sa MS Excel upang mabilang ang mga halaga kung ito ay isang string, mga numero. Ang pagbibilang ay maaaring gawin batay sa ilang pamantayan. Kasama sa mga pagpapaandar ang COUNT, COUNTA, COUNTBLANK, COUNTIF, at COUNTIFS sa excel. Gayunpaman, ang mga pagpapaandar na ito ay hindi maaaring gumawa ng ilang mga gawain tulad ng pagbibilang ng mga cell batay sa kanilang kulay, pagbibilang lamang ng mga naka-bold na halaga, atbp. Iyon ang dahilan kung bakit lilikha kami ng isang counter sa VBA upang maaari naming bilangin ang mga uri ng mga gawain sa excel.

Lumikha tayo ng ilang counter sa excel VBA.

Mga halimbawa ng Excel VBA Counter

Maaari mong i-download ang Template ng VBA Counter Excel dito - VBA Counter Excel Template

Nasa ibaba ang mga halimbawa ng counter sa VBA.

Halimbawa # 1

Ipagpalagay, mayroon kaming data tulad ng nasa itaas para sa 32 mga hilera. Lilikha kami ng isang VBA counter, na bibilangin ang mga halaga, na higit sa 50 at isa pang counter upang mabilang ang mga halaga, na mas mababa sa 50. Lilikha kami ng VBA code sa ganitong paraan upang ang gumagamit ay maaaring magkaroon ng data para sa walang limitasyong mga hilera sa excel.

Upang gawin ang pareho, ang mga hakbang ay magiging:

Siguraduhin na ang Developer nakikita ang tab Excel. Upang makita ang tab (kung hindi), ang mga hakbang ay:

Mag-click sa 'File' tab sa laso at pumili 'Opsyon' mula sa listahan.

Piliin ang ‘Ipasadya ang Ribbon ' mula sa listahan, lagyan ng tsek ang kahon para sa 'Developer', at mag-click sa OK lang.

Ngayon ang Tab na 'Developer' ay nakikita.

Ipasok ang command button gamit ang 'Ipasok' magagamit ang utos sa Grupo na 'Mga Kontrol' nasa Tab na 'Developer'.

Habang pinipindot ang ALT susi, lumikha ng command button gamit ang mouse. Kung patuloy tayong pagpindot ALT key, pagkatapos ang mga gilid ng command button ay awtomatikong pupunta sa hangganan ng mga cell.

Mag-right click sa command button upang buksan ang menu ng konteksto (siguraduhin 'Mode ng Disenyo' ay naaktibo kung hindi man hindi namin mabubuksan ang menu ng konteksto).

Pumili ka 'Ari-arian' mula sa menu.

Baguhin ang mga katangian ng command button ibig sabihin, Pangalan, Caption, at Font, atbp.

Mag-right click muli at piliin ang 'Tingnan ang Code' mula sa menu ng konteksto.

Ang Visual Basic Editor ay binuksan ngayon at bilang default, isang subroutine ay nalikha na para sa command button.

Magsusulat kami ng code ngayon. Ipapahayag namin ang 3 mga variable. Isa para sa layunin ng loop, isa upang mabilang at isa upang maiimbak ang halaga para sa huling hilera.

Gagamitin namin ang code upang piliin ang cell A1 at pagkatapos ang kasalukuyang rehiyon ng cell A1 at pagkatapos ay bumaba sa huling napunan na hilera upang makuha ang huling napunan na numero ng hilera.

Tatakbo kami a 'Para' loop sa VBA upang suriin ang mga halagang nakasulat sa A2 cell hanggang sa huling puno ng cell sa haligi ng A. Dadagdagan namin ang halaga ng 'Counter' variable ng 1 kung ang halaga ay mas malaki sa 50 at babaguhin ang kulay ng font ng cell sa 'Bughaw' at kung ang halaga ay mas mababa sa 50 pagkatapos ang kulay ng font ng cell ay magiging 'Pula'.

Matapos suriin at bilangin, kailangan nating ipakita ang mga halaga. Upang gawin ang pareho, gagamitin namin 'VBA MsgBox'.

Code:

 Pribadong Sub CountingCellsbyValue_Click () Dim i, counter Bilang Integer Dim lastrow Bilang Long lastrow = Range ("A1"). CurrentRegion.End (xlDown) .Row For i = 2 To lastrow If Cells (i, 1) .Value> 50 Pagkatapos counter = counter + 1 Cells (i, 1) .Font.ColorIndex = 5 Else Cells (i, 1) .Font.ColorIndex = 3 Wakas Kung Susunod i MsgBox "May mga" & counter & "na halagang higit sa 50" & _ vbCrLf & "Mayroong" & lastrow - counter & "mga halagang mas mababa sa 50" End Sub 

I-deactivate ang 'Mode ng Disenyo' at mag-click sa 'Command button'. Ang resulta ay ang mga sumusunod.

Halimbawa # 2

Ipagpalagay na nais naming lumikha ng time counter gamit ang excel VBA tulad ng sumusunod:

Kung nag-click kami sa 'Start' button, nagsisimula ang timer at kung mag-click kami sa 'Tumigil' pindutan, humihinto ang timer.

Upang gawin ang pareho, ang mga hakbang ay magiging:

Lumikha ng isang format na tulad nito sa isang excel sheet.

Baguhin ang format ng cell A2 bilang 'Hh: mm: ss'.

Pagsamahin ang mga cell C3 hanggang G7 sa pamamagitan ng paggamit ng Merge at Center Excel utos sa 'Alignment' na pangkat nasa Tab na 'Home'.

Ibigay ang sanggunian ng cell A2 para sa pinagsamang cell lamang at pagkatapos ay gawin ang pag-format tulad ng gawin ang font style sa 'Baskerville', laki ng font hanggang 60, atbp.

Lumikha ng dalawang mga pindutan ng utos 'Start' at 'Tumigil' gamit ang 'Isingit' na utos magagamit sa Grupo na 'Mga Kontrol' nasa Tab na 'Developer'.

Gamit ang Utos ng 'Properties' magagamit sa Grupo na 'Mga Kontrol' nasa Tab na 'Developer', baguhin ang mga pag-aari.

Piliin ang mga pindutan ng mga utos isa-isa at piliin ang 'Tingnan ang Code' utos mula sa 'Mga Kontrol' pangkat sa 'Developer' tab upang isulat ang code tulad ng sumusunod.

Pumili mula sa drop-down na naaangkop na pindutan ng utos.

Ipasok ang isang module sa 'ThisWorkbook' sa pamamagitan ng pag-right click sa 'Thisbookbook' at pagkatapos ay pumili 'Ipasok' at pagkatapos 'Modyul'.

Isulat ang sumusunod na code sa modyul.

Code:

 Sub start_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment" End Sub Sub end_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment",, Maling Katapusan ng Sub Sub sa susunod_moment () Kung Mga Worksheet ("Time Counter"). Saklaw ("A2"). Halaga = 0 Pagkatapos Exit Sub Worksheets ("Time Counter"). Saklaw ("A2"). Halaga = Mga Worksheet ("Oras Counter "). Saklaw (" A2 "). Halaga - TimeValue (" 00:00:01 ") start_time End Sub 

Ginamit namin ang ‘tamang oras‘Pamamaraan ng Paglalapat bagay, na ginagamit upang magpatakbo ng isang pamamaraan sa isang naka-iskedyul na oras. Ang pamamaraan, na naiskedyul naming patakbuhin, ay "Susunod_moment".

I-save ang code. Isulat ang oras sa A2 cell at mag-click sa 'Start' pindutan upang simulan ang counter ng oras.

Halimbawa # 3

Ipagpalagay, mayroon kaming isang listahan ng mga mag-aaral kasama ang mga marka na nakuha nila. Nais naming bilangin ang bilang ng mga mag-aaral na pumasa at kung sino ang nabigo.

Upang gawin ang pareho, isusulat namin ang VBA code.

Ang mga hakbang ay:

Buksan ang Visual Basic editor sa pamamagitan ng pagpindot shortcut sa excel Alt + F11 at pag-double click sa 'Sheet3 (Nagbibilang ng Bilang ng mga mag-aaral)' upang magsingit ng isang subroutine batay sa isang kaganapan sa Sheet3.

Pumili ka 'Worksheet' mula sa dropdown.

Habang pumipili kami 'Worksheet' mula sa listahan, maaari nating makita, maraming mga kaganapan sa katabing dropdown. Kailangan nating pumili 'SelectionChange' mula sa listahan.

Ipapahayag namin ang variable ng VBA 'Lastrow' para sa pag-iimbak ng huling numero ng hilera bilang isang listahan para sa mga mag-aaral ay maaaring dagdagan, 'Pass' upang maiimbak ang bilang ng mga mag-aaral na nakapasa at 'Mabibigo' upang mag-imbak ng bilang ng mga mag-aaral na nabigo.

Iimbak namin ang halaga ng huling numero ng hilera sa 'Lastrow'.

Lilikha namin ang Loop na 'para' para sa pagbibilang batay sa kondisyon.

Nakatakda namin ang kundisyon kung ang kabuuang marka ay mas malaki sa 99 pagkatapos ay idagdag ang halagang 1 sa 'Pass' variable at magdagdag ng 1 halaga sa 'Mabibigo' variable kung nabigo ang kundisyon.

Ang huling pahayag ang gumagawa ng heading 'Buod' matapang.

Upang mai-print ang mga halaga sa sheet, ang code ay magiging:

Code:

 Pribadong Sub Worksheet_SelectionChange (ByVal Target Bilang Saklaw) Dim lastrow Bilang Long Dim pass Bilang Integer Dim mabibigo Bilang Integer lastrow = Saklaw ("A1"). CurrentRegion.End (xlDown) .Row For i = 2 To lastrow If Cells (i, 5 )> 99 Pagkatapos ipasa = pass + 1 Else fail = fail + 1 End If Cells (1, 7) .Font.Bold = True Next i Range ("G1"). Value = "Buod" Saklaw ("G2"). Halaga = "Ang bilang ng mga mag-aaral na pumasa ay" & pass Range ("G3"). Value = "Ang bilang ng mga mag-aaral na nabigo ay" & fail End Sub 

Ngayon tuwing may pagbabago sa pagpili, ang mga halaga ay makakalkula muli sa ibaba:

Bagay na dapat alalahanin

  1. I-save ang file pagkatapos magsulat ng code sa VBA gamit ang .xlsm excel extension kung hindi man gagana ang macro.
  2. Gamitin ang loop na 'Para' kapag napagpasyahan na para sa kung gaano karaming beses, tatakbo ang code sa loop ng VBA.