VBA-teller - Hvordan lage teller i Excel VBA? (med eksempler)

Innholdsfortegnelse

Excel VBA-teller

Det er de forskjellige funksjonene i MS Excel for å telle verdier, enten det er en streng, tall. Telling kan gjøres basert på noen kriterier. Funksjonene inkluderer COUNT, COUNTA, COUNTBLANK, COUNTIF og COUNTIFS i excel. Imidlertid kan disse funksjonene ikke utføre noen oppgaver som å telle cellene basert på fargen deres, bare telle dristige verdier osv. Det er derfor vi vil lage en teller i VBA slik at vi kan telle for disse typer oppgaver i excel.

La oss lage noen teller i excel VBA.

Eksempler på Excel VBA Counter

Nedenfor er eksempler på disken i VBA.

Eksempel 1

Anta at vi har data som ovenfor for 32 rader. Vi vil lage en VBA-teller som teller verdiene som er større enn 50 og en teller til for å telle verdiene som er mindre enn 50. Vi vil opprette VBA-koden på denne måten slik at brukeren kan ha data for ubegrensede rader i excel.

For å gjøre det samme vil trinn være:

Forsikre deg om at utviklerfanen Excel er synlig. For å gjøre fanen synlig (hvis ikke), er trinnene:

Klikk på 'Fil' -fanen i båndet og velg 'Alternativ' fra listen.

Velg ' Tilpass bånd' fra listen, merk av for 'Utvikler' og klikk på OK .

Nå er fanen 'Utvikler' synlig.

Sett inn kommandoknappen ved å bruke kommandoen 'Sett inn' som er tilgjengelig i gruppen 'Kontroller' i kategorien 'Utvikler' .

Mens du trykker på ALT- tasten, oppretter du kommandoknappen med musen. Hvis vi fortsetter å trykke på ALT-tasten , går kantene på kommandoknappen automatisk med cellene.

Høyreklikk på kommandoknappen for å åpne kontekstmenyen (sørg for at 'Design Mode' er aktivert. Ellers vil vi ikke kunne åpne kontekstmenyen).

Velg Egenskaper fra menyen.

Endre egenskapene til kommandoknappen, dvs. navn, bildetekst og skrift osv.

Høyreklikk igjen og velg 'Vis kode' fra hurtigmenyen.

Visual Basic Editor åpnes nå, og som standard er det allerede opprettet en underrutine for kommandoknappen.

Vi skriver kode nå. Vi vil erklære 3 variabler. En for løkkeformål, en for å telle og en for å lagre verdien for den siste raden.

Vi vil bruke koden til å velge celle A1 og deretter den nåværende regionen til celle A1 og deretter komme oss ned til sist fylte rad for å få det sist fylte radnummeret.

Vi vil kjøre en 'for' løkke i VBA for å sjekke verdiene som er skrevet i A2-cellen til den sist fylte cellen i A-kolonnen. Vi vil øke verdien av ' tellervariabelen med 1 hvis verdien er større enn 50 og vil endre skriftfargen på cellen til ' Blå ', og hvis verdien er mindre enn 50, så vil skriftfargen på cellen ville være 'rødt'.

Etter å ha sjekket og telt, må vi vise verdiene. For å gjøre det samme, vil vi bruke 'VBA MsgBox.'

Kode:

Privat deltellingCellsbyValue_Click () Dim i, counter Som Integer Dim lastrow As Long lastrow = Range ("A1"). CurrentRegion.End (xlDown). Row For i = 2 To lastrow If Cells (i, 1) .Value> 50 Then teller = teller + 1 celler (i, 1). Font.ColorIndex = 5 Andre celler (i, 1). Font.ColorIndex = 3 End If Next i MsgBox "Det er" & counter & "verdier som er større enn 50" & _ vbCrLf & "Det er" & lastrow - counter & "verdier som er mindre enn 50" End Sub

Deaktiver 'Design Mode' og klikk på 'Command-knappen'. Resultatet vil bli som følger.

Eksempel 2

Anta at vi vil lage tidstelleren ved hjelp av excel VBA som følger:

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.

Interessante artikler...