ВБА Цоунтер - Како створити бројач у програму Екцел ВБА? (са примерима)

Преглед садржаја

Екцел ВБА бројач

У програму МС Екцел постоји различита функција за бројање вредности, било да се ради о низу, бројевима. Бројање се може извршити на основу неких критеријума. Функције укључују ЦОУНТ, ЦОУНТА, ЦОУНТБЛАНК, ЦОУНТИФ и ЦОУНТИФС у Екцелу. Међутим, ове функције не могу да обављају неке задатке попут бројања ћелија на основу њихове боје, бројања само подебљаних вредности итд. Због тога ћемо створити бројач у ВБА тако да можемо рачунати за ове врсте задатака у екцелу.

Направимо неки бројач у екцелу ВБА.

Примери Екцел ВБА бројача

Испод су примери бројача у ВБА.

Пример # 1

Претпоставимо да имамо податке као горе за 32 реда. Направићемо ВБА бројач, који ће бројати вредности веће од 50 и још један бројач за бројање вредности мање од 50. На овај начин ћемо створити ВБА код тако да корисник може имати податке за неограничени редови у екцелу.

Да бисте учинили исто, кораци би били:

Уверите се да је видљива картица програмера Екцел. Да би картица била видљива (ако није), следећи кораци:

Кликните на картицу „Датотека“ на траци и на листи одаберите „Опција“ .

С пописа одаберите „ Прилагоди врпцу“ , означите поље за потврду „Програмер“ и кликните на дугме У реду .

Сада је видљива картица „Програмер“ .

Уметните командно дугме помоћу команде „Убаци“ која је доступна у групи „Контроле“ на картици „Програмер“ .

Док притискате тастер АЛТ , мишем створите командно дугме. Ако и даље притиснемо тастер АЛТ , ивице командног дугмета аутоматски иду уз обод ћелија.

Кликните десним тастером миша на командно дугме да бисте отворили контекстуални мени (уверите се да је активиран „Режим дизајна“ ; у супротном нећемо моћи да отворимо контекстуални мени).

Изаберите 'Пропертиес' у менију.

Промените својства командног дугмета, тј. Име, наслов и фонт, итд.

Поново кликните десним тастером миша и одаберите „Прикажи код“ из контекстуалног менија.

Висуал Басиц Едитор је сада отворен и по подразумеваној вредности је већ створена потпрограм за командно дугме.

Сад ћемо написати код. Прогласићемо 3 променљиве. Један за петљу, један за бројање и један за чување вредности за последњи ред.

Помоћу кода ћемо одабрати ћелију А1, а затим тренутни регион ћелије А1, а затим се спустити до последњег попуњеног реда да бисмо добили број последњег попуњеног реда.

Ми ће покренути 'за' петље у ВБА за проверу вредности написане у А2 ћелији до последњег испуњених ћелију у колони. Повећаћемо вредност променљиве „бројач“ за 1 ако је вредност већа од 50 и променићемо боју фонта ћелије у „Плава“, а ако је вредност мања од 50, тада ће боја фонта ћелије би било „црвено“.

Након провере и бројања, треба да прикажемо вредности. Да бисмо учинили исто, користићемо „ВБА МсгБок“.

Шифра:

Привате Суб ЦоунтингЦеллсбиВалуе_Цлицк () Дим и, цоунтер Ас Интегер Дим Ластров Ас Лонг ластров = Ранге ("А1"). ЦуррентРегион.Енд (клДовн) .Ров фор и = 2 То ластров Иф Целлс (и, 1) .Валуе> 50 Тхен бројач = бројач + 1 ћелија (и, 1) .Фонт.ЦолорИндек = 5 осталих ћелија (и, 1) .Фонт.ЦолорИндек = 3 Крај ако је даље и МсгБок "Постоје" и бројач & "вредности које су веће од 50" & _ вбЦрЛф & "Постоје" & ластров - бројач & "вредности које су мање од 50" Крај Суб

Деактивирајте „Режим дизајна“ и кликните на „дугме Цомманд“. Резултат би био следећи.

Пример # 2

Претпоставимо да желимо да креирамо бројач времена користећи екцел ВБА на следећи начин:

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.

Занимљиви Чланци...