VBA-Zähler - Wie erstelle ich einen Zähler in Excel VBA? (mit Beispielen)

Inhaltsverzeichnis

Excel VBA-Zähler

In MS Excel gibt es verschiedene Funktionen zum Zählen von Werten, unabhängig davon, ob es sich um eine Zeichenfolge oder um Zahlen handelt. Die Zählung kann anhand einiger Kriterien erfolgen. Zu den Funktionen gehören COUNT, COUNTA, COUNTBLANK, COUNTIF und COUNTIFS in Excel. Diese Funktionen können jedoch einige Aufgaben wie das Zählen der Zellen anhand ihrer Farbe, das Zählen nur fetter Werte usw. nicht ausführen. Aus diesem Grund erstellen wir in VBA einen Zähler, damit wir diese Arten von Aufgaben in Excel zählen können.

Lassen Sie uns einen Zähler in Excel VBA erstellen.

Beispiele für Excel VBA Counter

Unten finden Sie Beispiele für den Zähler in VBA.

Beispiel 1

Angenommen, wir haben Daten wie oben für 32 Zeilen. Wir werden einen VBA-Zähler erstellen, der die Werte zählt, die größer als 50 sind, und einen weiteren Zähler, um die Werte zu zählen, die kleiner als 50 sind. Wir werden den VBA-Code auf diese Weise erstellen, damit der Benutzer Daten für haben kann unbegrenzte Zeilen in Excel.

Um dasselbe zu tun, wären die Schritte:

Stellen Sie sicher, dass die Registerkarte Entwickler Excel sichtbar ist. Um die Registerkarte sichtbar zu machen (falls nicht), gehen Sie wie folgt vor:

Klicken Sie im Menüband auf die Registerkarte "Datei" und wählen Sie "Option" aus der Liste.

Wählen Sie " Multifunktionsleiste anpassen" aus der Liste, aktivieren Sie das Kontrollkästchen "Entwickler" und klicken Sie auf " OK" .

Jetzt ist die Registerkarte "Entwickler" sichtbar.

Fügen Sie die Befehlsschaltfläche mit dem Befehl 'Einfügen' ein , der in der Gruppe 'Steuerelemente' auf der Registerkarte 'Entwickler' verfügbar ist .

Erstellen Sie bei gedrückter ALT- Taste die Befehlsschaltfläche mit der Maus. Wenn wir die ALT-Taste gedrückt halten , werden die Kanten der Befehlsschaltfläche automatisch an den Rand der Zellen angepasst.

Klicken Sie mit der rechten Maustaste auf die Befehlsschaltfläche, um das Kontextmenü zu öffnen (stellen Sie sicher, dass 'Design Mode' aktiviert ist; andernfalls können wir das Kontextmenü nicht öffnen).

Wählen Sie "Eigenschaften" aus dem Menü.

Ändern Sie die Eigenschaften der Befehlsschaltfläche, z. B. Name, Beschriftung und Schriftart usw.

Klicken Sie erneut mit der rechten Maustaste und wählen Sie den 'Code anzeigen' aus dem Kontextmenü.

Der Visual Basic-Editor wird jetzt geöffnet und standardmäßig ist bereits eine Unterroutine für die Befehlsschaltfläche erstellt.

Wir werden jetzt Code schreiben. Wir werden 3 Variablen deklarieren. Eine für Schleifenzwecke, eine zum Zählen und eine zum Speichern des Werts für die letzte Zeile.

Wir werden den Code verwenden, um Zelle A1 und dann den aktuellen Bereich von Zelle A1 auszuwählen und dann zur zuletzt gefüllten Zeile zu gelangen, um die zuletzt gefüllte Zeilennummer zu erhalten.

Wir werden eine 'for'- Schleife in VBA ausführen , um die Werte zu überprüfen, die in der A2-Zelle bis zur zuletzt gefüllten Zelle in der A-Spalte geschrieben wurden. Wir erhöhen den Wert der Variablen 'counter' um 1, wenn der Wert größer als 50 ist, und ändern die Schriftfarbe der Zelle in 'Blue', und wenn der Wert kleiner als 50 ist, die Schriftfarbe der Zelle wäre 'Rot'.

Nach dem Überprüfen und Zählen müssen wir die Werte anzeigen. Um dasselbe zu tun, verwenden wir 'VBA MsgBox'.

Code:

Private Sub CountingCellsbyValue_Click () Dim i, Zähler As Integer Dim lastrow As Long lastrow = Range ("A1"). CurrentRegion.End (xlDown) .Row For i = 2 To lastrow If Cells (i, 1) .Value> 50 Then counter = counter + 1 Cells (i, 1) .Font.ColorIndex = 5 Else Cells (i, 1) .Font.ColorIndex = 3 End If Next i MsgBox "Es gibt" & counter & "-Werte, die größer als 50 sind." & _ vbCrLf & "Es gibt" & lastrow - counter & "Werte, die kleiner als 50 sind" End Sub

Deaktivieren Sie den 'Design-Modus' und klicken Sie auf die 'Befehlsschaltfläche'. Das Ergebnis wäre wie folgt.

Beispiel 2

Angenommen, wir möchten den Zeitzähler mit Excel VBA wie folgt erstellen:

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 Beiträge...