„Excel VBA“ skaitiklis
„MS Excel“ yra įvairi funkcija skaičiuoti reikšmes, nesvarbu, ar tai eilutė, ar 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
Žemiau pateikiami skaitiklio VBA pavyzdžiai.
1 pavyzdys

Tarkime, kad mes turime 32 eilučių duomenis, kaip nurodyta 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 ląstelių kraštu.

Dešiniuoju pelės mygtuku spustelėkite komandos mygtuką, kad atidarytumėte kontekstinį meniu (įsitikinkite, kad įjungtas „Dizaino režimas“ ; priešingu atveju 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 dabartinį 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 reikšmė bus mažesnė nei 50, tada 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). Vertė> 50 Tada 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:
If we click on the ‘Start’ button, the timer starts, and if we click on the ‘Stop’ button, the timer stops.
To do the same, steps would be:
Create a format like this in an excel sheet.

Change the format of the cell A2 as ‘hh:mm: ss.’

Merge the cells C3 to G7 by using the Merge and Center Excel command in the ‘Alignment’ group in the ‘Home’ tab.

Give the reference of cell A2 for just merged cell and then do the formatting like make the font style to ‘Baskerville,’ font size to 60, etc.

Create two command buttons, ‘Start’ and ‘Stop’ using the ‘Insert’ command available in the ‘Controls’ group in the ‘Developer’ tab.

Using the ‘Properties’ command available in the ‘Controls’ group in the ‘Developer’ tab, change the properties.

Select the commands buttons one by one and choose the ‘View Code’ command from the ‘Controls’ group in the ‘Developer’ tab to write the code as follows.

Choose from the drop-down the appropriate command button.


Insert a module into ‘ThisWorkbook‘ by right-clicking on the ‘Thisworkbook’ and then choose ‘Insert’ and then ‘Module.’

Write the following code in the module.
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", , False End Sub Sub next_moment() If Worksheets("Time Counter").Range("A2").Value = 0 Then Exit Sub Worksheets("Time Counter").Range("A2").Value = Worksheets("Time Counter").Range("A2").Value - TimeValue("00:00:01") start_time End Sub
We have used the ‘onTime‘ method of the Application object, which is used to run a procedure at a scheduled time. The procedure, which we have scheduled to run, is “next_moment.”
Save the code. Write the time in the A2 cell and click on the ‘Start’ button to start the time counter.

Example #3
Suppose we have a list of students along with marks scored by them. We want to count the number of students who passed and who failed.

To do the same, we will write the VBA code.
Steps would be:
Open Visual Basic editor by pressing shortcut in excel Alt+F11 and double click on ‘Sheet3 (Counting Number of students)’ to insert a subroutine based on an event in Sheet3.

Choose ‘Worksheet’ from the dropdown.

As we pick ‘Worksheet’ from the list, we can see, there are various events in the adjacent dropdown. We need to choose ‘SelectionChange’ from the list.


We will declare the VBA variable ‘lastrow’ for storing last row number as a list for students can increase, ‘pass’ to store a number of students who passed, and ‘fail’ to store a number of students who failed.

We will store the value of the last row number in ‘lastrow.’

We will create the ‘for’ loop for counting based on condition.

We have set the condition if the total marks are greater than 99, then add the value 1 to the ‘pass’ variable and add one value to the ‘fail’ variable if the condition fails.
The last statement makes the heading ‘Summary’ bold.
To print the values in the sheet, the code would be:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim lastrow As Long Dim pass As Integer Dim fail As Integer lastrow = Range("A1").CurrentRegion.End(xlDown).Row For i = 2 To lastrow If Cells(i, 5)> 99 Then pass = pass + 1 Else fail = fail + 1 End If Cells(1, 7).Font.Bold = True Next i Range("G1").Value = "Summary" Range("G2").Value = "The number of students who passed is " & pass Range("G3").Value = "The number of students who failed is " & fail End Sub
Now whenever there is a change in selection, values will be calculated again as below:

Things to Remember
- Save the file after writing code in VBA with .xlsm excel extension; otherwise, the macro will not work.
- Use the ‘For’ loop when it is decided already for how many times the code in the VBA loop will run.