VBA-laskuri - Kuinka luoda laskuri Excel VBA: ssa? (esimerkkien kanssa)

Sisällysluettelo

Excel VBA -laskuri

MS Excelissä on useita toimintoja, joiden avulla voidaan laskea arvoja, olipa kyseessä merkkijono, numerot. Laskenta voidaan tehdä joidenkin kriteerien perusteella. Toiminnot sisältävät COUNT, COUNTA, COUNTBLANK, COUNTIF ja COUNTIFS Excelissä. Nämä toiminnot eivät kuitenkaan voi tehdä joitain tehtäviä, kuten laskea soluja niiden värin perusteella, laskea vain lihavoituja arvoja jne. Siksi luomme laskurin VBA: hon, jotta voimme laskea tämäntyyppiset tehtävät Excelissä.

Luodaan laskuri Excel VBA: ssa.

Esimerkkejä Excel VBA -laskurista

Alla on esimerkkejä VBA: n laskurista.

Esimerkki 1

Oletetaan, että meillä on yllä olevan kaltaisia ​​tietoja 32 riviltä. Luomme VBA-laskurin, joka laskee arvot, jotka ovat suurempia kuin 50, ja yhden laskurin, jotta voidaan laskea arvot, jotka ovat alle 50. Luomme VBA-koodin tällä tavalla, jotta käyttäjällä voi olla tietoja rajattomat rivit excelissä.

Voit tehdä samoin vaiheet:

Varmista, että Kehittäjä- välilehti Excel on näkyvissä. Voit tehdä välilehden näkyväksi (jos ei) seuraavasti:

Napsauta valintanauhan Tiedosto- välilehteä ja valitse luettelosta Option .

Valitse luettelosta Mukauta nauha , valitse Kehittäjä- ruutu ja napsauta OK .

Nyt Kehittäjä-välilehti on näkyvissä.

Lisää komentopainike Kehittäjä-välilehden Ohjaimet-ryhmässä olevalla Lisää- komennolla .

Luo komentopainike hiirellä samalla, kun painat ALT- näppäintä. Jos painamme jatkuvasti ALT-näppäintä , komentopainikkeen reunat menevät automaattisesti solujen reunan kanssa.

Napsauta hiiren kakkospainikkeella komentopainiketta avataksesi kontekstivalikon (varmista, että Suunnittelutila on aktivoitu; muuten emme voi avata asiayhteysvalikkoa).

Valitse valikosta Ominaisuudet .

Muuta komentopainikkeen ominaisuuksia, kuten Nimi, Kuvateksti ja Fontti jne.

Napsauta hiiren kakkospainikkeella uudelleen ja valitse kontekstivalikosta 'Näytä koodi' .

Visual Basic Editor on nyt avattu, ja oletuksena komentopainikkeelle on jo luotu aliohjelma.

Kirjoitamme koodin nyt. Ilmoitamme 3 muuttujaa. Yksi silmukan tarkoituksiin, yksi laskettavaksi ja toinen viimeisen rivin arvon tallentamiseksi.

Käytämme koodia solun A1 ja sitten solun A1 nykyisen alueen valitsemiseen ja menemme sitten viimeiseen täytettyyn riviin saadaksesi viimeisen täytetyn rivinumeron.

Me ajaa 'varten' silmukka VBA tarkistaa arvot kirjoitetaan A2 solun viimeinen täynnä solu A -pylvääseen. Lisäämme 'laskuri' -muuttujan arvoa yhdellä, jos arvo on suurempi kuin 50, ja muutamme solun kirjasimen väriksi 'Sininen', ja jos arvo on alle 50, niin solun kirjasimen väri olisi 'punainen'.

Tarkistuksen ja laskemisen jälkeen meidän on näytettävä arvot. Tehdäkseen samoin käytämme VBA MsgBoxia.

Koodi:

Yksityinen alilaskentaCellsbyValue_Click () Dim i, laskuri Kokonaislukuna Dim lastrow As Long lastrow = Alue ("A1"). CurrentRegion.End (xlDown). Rivi i = 2 Jos solut (i, 1). Arvo> 50 Sitten laskuri = laskuri + 1 solu (i, 1) .Font.ColorIndex = 5 muuta solua (i, 1) .Font.ColorIndex = 3 loppu Jos seuraava i MsgBox "On" & laskuri & "arvoja, jotka ovat suurempia kuin 50" & _ vbCrLf & "On olemassa & & lastrow - counter &" arvoja, jotka ovat alle 50 "End Sub

Poista käytöstä 'Suunnittelutila' ja napsauta 'Komento-painiketta'. Tulos olisi seuraava.

Esimerkki 2

Oletetaan, että haluamme luoda aikalaskurin käyttämällä Excel VBA: ta seuraavasti:

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.

Mielenkiintoisia artikkeleita...