VBA skaitiklis | Kaip sukurti skaitiklį „Excel VBA“? (su pavyzdžiais)

„Excel VBA“ skaitiklis

„MS Excel“ yra įvairi funkcija skaičiuoti reikšmes, nesvarbu, ar tai eilutė, skaičiai. Skaičiuoti galima remiantis kai kuriais kriterijais. Funkcijos apima „COUNT“, COUNTA, COUNTBLANK, COUNTIF ir COUNTIFS „Excel“. Tačiau šios funkcijos negali atlikti kai kurių užduočių, pavyzdžiui, skaičiuoti langelius pagal jų spalvą, skaičiuoti tik paryškintas reikšmes ir pan. Štai kodėl mes sukursime skaitiklį VBA, kad galėtume suskaičiuoti tokio tipo užduotis „Excel“.

Sukurkime „Excel VBA“ skaitiklį.

„Excel VBA Counter“ pavyzdžiai

Šį „VBA Counter Excel“ šabloną galite atsisiųsti čia - „VBA Counter Excel“ šablonas

Žemiau pateikiami skaitiklio VBA pavyzdžiai.

1 pavyzdys

Tarkime, mes turime 32 eilučių duomenis, panašius į aukščiau. Sukursime VBA skaitiklį, kuris suskaičiuos reikšmes, kurios yra didesnės nei 50, ir dar vieną skaitiklį, kad būtų galima suskaičiuoti vertes, kurios yra mažesnės nei 50. Sukursime VBA kodą tokiu būdu, kad vartotojas galėtų turėti duomenų apie neribotos „Excel“ eilutės.

Norėdami tai padaryti, atlikite šiuos veiksmus:

Įsitikinkite, kad  matomas „ Developer“ skirtukas „Excel“. Kad skirtukas būtų matomas (jei ne), atlikite šiuos veiksmus:

Spustelėkite juostos skirtuką „Failas“ ir sąraše pasirinkite „Variantas“ .

Sąraše pasirinkite „ Tinkinti juostelę“ , pažymėkite laukelį „Kūrėjas“ ir spustelėkite Gerai .

Dabar matomas „Kūrėjo“ skirtukas .

Įdėkite komandos mygtuką naudodami komandą „Įterpti“ , esančią skirtuke „Kūrėjas“ esančioje grupėje „Valdikliai“ .

Paspausdami klavišą ALT , pele sukurkite komandos mygtuką. Jei mes nuolat paspausime ALT klavišą , tada komandos mygtuko kraštai eina automatiškai su langelių kraštu.

Dešiniuoju pelės mygtuku spustelėkite komandos mygtuką, kad atidarytumėte kontekstinį meniu (įsitikinkite, kad įjungtas „Dizaino režimas“, kitaip negalėsime atidaryti kontekstinio meniu).

Meniu pasirinkite „Ypatybės“ .

Pakeiskite komandos mygtuko ypatybes, ty pavadinimą, antraštę, šriftą ir kt.

Dešiniuoju pelės mygtuku spustelėkite dar kartą ir kontekstiniame meniu pasirinkite „Peržiūrėti kodą“ .

„Visual Basic“ redaktorius atidarytas dabar ir pagal numatytuosius nustatymus komandos mygtukas jau yra sukurtas paprogramė.

Dabar parašysime kodą. Deklaruosime 3 kintamuosius. Vienas skirtas kilpos tikslui, vienas skaičiuojamas ir vienas paskutinės eilutės vertei saugoti.

Mes naudosime kodą, norėdami pasirinkti langelį A1, tada esamą langelio A1 regioną, tada nusileisime iki paskutinės užpildytos eilutės, kad gautume paskutinės užpildytos eilutės numerį.

Mes paleisti "už" kilpos VBA patikrinti vertybes parašyta A2 ląstelių paskutinį užpildytą langelį į stulpelį. Padidinsime „counter“ kintamojo vertę 1, jei vertė bus didesnė nei 50, ir pakeisime langelio šrifto spalvą į „Blue“, o jei vertė bus mažesnė nei 50, langelio šrifto spalva būtų „Raudona“ .

Patikrinę ir suskaičiavę turime parodyti reikšmes. Norėdami tai padaryti, naudosime „VBA MsgBox“.

Kodas:

 Privatus antrinis skaičiavimasCellsbyValue_Click () Dim i, skaitiklis As Integer Dim paskutinis kaip ilgas paskutinis = diapazonas ("A1"). CurrentRegion.End (xlDown). Eilutė, skirta i = 2, jei pridedama ląstelių (i, 1). skaitiklis = skaitiklis + 1 langelis (i, 1) .Font.ColorIndex = 5 kitos ląstelės (i, 1) .Font.ColorIndex = 3 pabaiga, jei kita i MsgBox "Yra" & counter & "reikšmės, kurios yra didesnės nei 50" & _ vbCrLf & "Yra" & lastrow - counter & "reikšmių, kurios yra mažesnės nei 50" End Sub 

Išjunkite „Design Mode“ ir spustelėkite mygtuką „Command“ . Rezultatas būtų toks.

2 pavyzdys

Tarkime, kad norime sukurti laiko skaitiklį naudodami „Excel VBA“ taip:

Jei spustelėsime mygtuką „Pradėti“ , laikmatis paleidžiamas, o jei spustelėsime mygtuką „Stop“ , laikmatis sustos.

Norėdami tai padaryti, atlikite šiuos veiksmus:

Sukurkite tokį formatą „Excel“ lape.

Pakeiskite langelio A2 formatą kaip „hh: mm: ss“ .

Sujunkite C3 – G7 langelius naudodami  komandą „ Merge and Center Excel , esančią „Home“ skirtuko grupėje „Alignment“ .

Nurodykite ką tik sujungtos langelio A2 langelio nuorodą, tada atlikite tokį formatavimą, kaip šrifto stilių padarykite „Baskerville“ , šrifto dydį - 60 ir t. T.

Sukurti du komandų mygtukai "Start" ir "Stop" , naudojant "Įterpti" komandą pasiekiamą "kontrolės" grupę į "užsakovas" kortelėje .

Naudojant "savybės" komandą pasiekiamą "kontrolės" grupę į "užsakovas" skirtuką , keisti savybes.

Pasirinkite komandų mygtukus po vieną ir skirtuke „Kūrėjas“ esančioje grupėje „Valdikliai“ pasirinkite komandą „Žiūrėti kodą“, kad parašytumėte kodą taip.

Išskleidžiamajame meniu pasirinkite atitinkamą komandos mygtuką.

Įdėkite modulį į „ThisWorkbook“ dešiniuoju pelės mygtuku spustelėdami „Thisworkbook“ , tada pasirinkite „Insert“ , tada - „Module“ .

Į modulį įrašykite šį kodą.

Kodas:

 Sub start_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment" End Sub Sub Sub end_time () Application.OnTime Now + TimeValue ("00:00:01"), "next_moment",, False End Sub Sub next_moment () Jei darbalapiai („Laiko skaitiklis“). Diapazonas („A2“). Reikšmė = 0, tada išeikite iš antrinių darbalapių („Laiko skaitiklis“). Diapazonas („A2“). Vertė = Darbalapiai („Laikas“ Skaitiklis "). Diapazonas (" A2 "). Reikšmė - TimeValue (" 00:00:01 ") pradžios laikas Pabaiga 

Mes panaudojome „ Application“ objekto „ onTime “ metodą , kuris naudojamas procedūrai vykdyti numatytu laiku. Procedūra, kurią planavome vykdyti, yra „next_moment“ .

Išsaugokite kodą. Parašykite laiką langelyje A2 ir spustelėkite mygtuką „Pradėti“, kad pradėtumėte laiko skaitiklį.

3 pavyzdys

Tarkime, mes turime studentų sąrašą kartu su jų surinktais įvertinimais. Norime suskaičiuoti išlaikiusių ir nesėkmingų studentų skaičių.

Norėdami tai padaryti, parašysime VBA kodą.

Žingsniai būtų:

Atidarykite „Visual Basic“ redaktorių paspausdami sparčiuosius klavišus programoje „Excel Alt + F11“ ir dukart spustelėkite „Sheet3 (Studentų skaičiaus skaičiavimas)“, kad įterptumėte paprogramę pagal įvykį į „Sheet3“.

Išskleidžiamajame meniu pasirinkite „Darbalapis“ .

Kai iš sąrašo pasirenkame „Darbalapis“ , galime pamatyti, kad gretimame išskleidžiamajame meniu yra įvairių įvykių. Iš sąrašo turime pasirinkti „SelectionChange“ .

Paskelbsime VBA kintamąjį „paskutiniu“ paskutinės eilutės numerio saugojimui, nes studentų sąrašas gali padidėti, „perduoti“, kad būtų išsaugotas išlaikiusių studentų skaičius, o „nepavyksta“ saugoti keleto nesėkmingų studentų.

Paskutinės eilutės numerio vertę išsaugosime „lastrow“.

Sukursime „už“ kilpą skaičiavimui pagal sąlygą.

Mes nustatėme sąlygą, jei bendras pažymių skaičius yra didesnis nei 99, tada pridėkite reikšmę 1 prie „pass“ kintamojo ir pridėkite 1 reikšmę prie „fail“ kintamojo, jei sąlyga nepavyks.

Paskutinis teiginys paryškina antraštę „Santrauka“ .

Norėdami atspausdinti lapo reikšmes, kodas bus toks:

Kodas:

 Privatus antrinis darbalapio_pasirinkimo pakeitimas („ByVal“ taikinys kaip diapazonas) Užmiršti paskutinį ilgą pravažiavimą kaip Sveikasis skaičius nepavyksta Kaip Sveikasis skaičius = Diapazonas ("A1"). CurrentRegion.End (xlDown). Eilutė, skirta i = 2, jei langeliai užpildomi (i, 5) )> 99 Tada perduoti = perduoti + 1 dar nepavykęs = nepavykęs + 1 pabaiga, jei langeliai (1, 7). Font.Bold = True Next i Range ("G1"). Reikšmė = "Summary" Diapazonas ("G2"). Vertė = "Išlaikiusių studentų skaičius yra" & išlaikymo diapazonas ("G3"). Vertė = "Nepavykusių studentų skaičius yra" 

Dabar, kai pasikeičia pasirinkimas, vertės vėl bus apskaičiuojamos taip:

Ką reikia atsiminti

  1. Išsaugokite failą parašę kodą VBA su .xlsm excel plėtiniu, kitaip makrokomanda neveiks.
  2. Naudokite kilpą „Už“, kai jau nuspręsta, kiek kartų VBA kilpos kodas veiks.

$config[zx-auto] not found$config[zx-overlay] not found