VBA brojač - Kako stvoriti brojač u programu Excel VBA? (s primjerima)

Excel VBA brojač

U MS Excelu postoji razna funkcija za brojanje vrijednosti, bilo da se radi o nizu, brojevima. Brojanje se može izvršiti na temelju nekih kriterija. Funkcije uključuju COUNT, COUNTA, COUNTBLANK, COUNTIF i COUNTIFS u Excelu. Međutim, ove funkcije ne mogu obavljati neke zadatke poput brojanja stanica na temelju njihove boje, brojanja samo podebljanih vrijednosti itd. Zbog toga ćemo stvoriti brojač u VBA-u kako bismo mogli računati za ove vrste zadataka u excelu.

Stvorimo neki brojač u excelu VBA.

Primjeri Excel VBA brojača

Ispod su primjeri brojača u VBA.

Primjer # 1

Pretpostavimo da imamo podatke kao gore za 32 retka. Stvorit ćemo VBA brojač koji će brojati vrijednosti veće od 50 i još jedan brojač za brojanje vrijednosti manje od 50. VBA kôd stvorit ćemo na ovaj način kako bi korisnik mogao imati podatke za neograničeni redovi u excelu.

Da biste učinili isto, koraci bi bili:

Provjerite je li vidljiva kartica Razvojni programer Excel. Da bi kartica bila vidljiva (ako nije), slijede koraci:

Kliknite karticu "Datoteka" na vrpci i odaberite "Opcija" s popisa.

S popisa odaberite " Prilagodi vrpcu" , potvrdite okvir "Razvojni programer" i kliknite U redu .

Sada je vidljiva kartica 'Developer' .

Umetnite naredbeni gumb pomoću naredbe "Umetni" koja je dostupna u grupi "Kontrole" na kartici "Razvojni programer" .

Dok pritiskate tipku ALT , mišem stvorite naredbenu tipku. Ako i dalje pritisnemo tipku ALT , rubovi naredbenog gumba automatski idu s rubom ćelija.

Desnom tipkom miša kliknite naredbenu tipku da biste otvorili kontekstualni izbornik (provjerite je li aktiviran 'Način dizajna' ; u protivnom nećemo moći otvoriti kontekstualni izbornik).

Na izborniku odaberite 'Svojstva' .

Promijenite svojstva naredbenog gumba, tj. Ime, Naslov i Font itd.

Ponovno kliknite desnom tipkom miša i na kontekstnom izborniku odaberite "Prikaži kod" .

Visual Basic Editor je sada otvoren i prema zadanim postavkama već je stvorena potprogram za naredbeni gumb.

Sad ćemo napisati kod. Proglasit ćemo 3 varijable. Jedan za petlju, jedan za brojanje i jedan za spremanje vrijednosti zadnjeg retka.

Koristit ćemo kôd za odabir ćelije A1, a zatim trenutnog područja ćelije A1, a zatim se spustiti do zadnjeg ispunjenog retka kako bismo dobili broj zadnjeg ispunjenog retka.

Pokrenut ćemo petlju 'for' u VBA kako bismo provjerili vrijednosti zapisane u ćeliji A2 do posljednje ispunjene ćelije u stupcu A. Povećat ćemo vrijednost varijable 'brojač' za 1 ako je vrijednost veća od 50 i promijenit ćemo boju fonta ćelije u 'Plava', a ako je vrijednost manja od 50, tada će boja fonta stanice bilo bi "Crveno".

Nakon provjere i brojanja trebamo prikazati vrijednosti. Da bismo učinili isto, upotrijebit ćemo 'VBA MsgBox.'

Kodirati:

Private Sub CountingCellsbyValue_Click () Dim i, counter As Integer Dim Lastrow As Long lastrow = Range ("A1"). CurrentRegion.End (xlDown) .Row for i = 2 Lastrow If Cells (i, 1) .Value> 50 Zatim brojač = brojač + 1 ćelija (i, 1) .Font.ColorIndex = 5 ostalih ćelija (i, 1) .Font.ColorIndex = 3 Kraj ako je dalje i MsgBox "Postoje" i brojač & "vrijednosti koje su veće od 50" & _ vbCrLf & "Postoje" & lastrow - brojač & "vrijednosti koje su manje od 50" Kraj Sub

Deaktivirajte "Način dizajna" i kliknite "Naredbeni gumb". Rezultat bi bio sljedeći.

Primjer # 2

Pretpostavimo da želimo stvoriti brojač vremena koristeći excel VBA na sljedeći način:

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

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

Zanimljivi članci...