U nastavku ćemo pogledati program u Excel VBA da sortira brojeve.
Situacija:
Postavite naredbeni gumb na radni list i dodajte sljedeće retke koda:
1. Prvo, deklariramo tri varijable tipa Integer i jedan Range objekt.
Dim i As Integer, j As Integer, temp As Integer, rng As Range
2. Inicijaliziramo objekt Range rng s brojevima u stupcu A. Za to koristimo svojstvo CurrentRegion. CurrentRegion je koristan ako unaprijed ne znamo točne granice raspona (želimo da ovaj program radi za 9 brojeva, ali i za 90 brojeva).
Postavite rng = Raspon ("A1"). CurrentRegion
3. Pokrećemo dvije petlje For Next.
Za i = 1 Za rng.Count
Za j = i + 1 Za rng.Prebroji
Objašnjenje: rng.Count je jednak 9, pa se prve dvije kodne retke svode na For i = 1 do 9 i For j = i + 1 do 9. Za i = 1 provjerava se j = 2, 3,…, 8 i 9 .
4. Za pravilno razvrstavanje brojeva uspoređujemo prvi broj sa sljedećim. Ako je sljedeći broj manji, mijenjamo brojeve. Dodajte sljedeću naredbu If Then.
Ako je rng.Cells (j) <rng.Cells (i) Tada
Završi ako
Ako je gornja tvrdnja točna, mijenjamo brojeve.
Na primjer: za i = 1 i j = 2 uspoređuju se brojevi 2 i 10. Gornja tvrdnja nije točna. Dakle, nema potrebe mijenjati brojeve. Excel VBA povećava j za 1 i ponavlja linije koda za i = 1 i j = 3. Lako možete vidjeti da je 5 veće od 2, pa još uvijek nema potrebe mijenjati brojeve. Dobivamo isti rezultat za j = 4, j = 5 i j = 6. Kada dođemo do j = 7, gornja tvrdnja je točna budući da je 1 manje od 2.
5. Mijenjamo brojeve. Privremeno spremamo jedan broj na temp, tako da Excel VBA može ispravno zamijeniti brojeve. Dodajte sljedeće kodne retke u naredbu If.
'zamijeniti brojeve
temp = rng. Ćelije (i)
rng.Cells (i) = rng.Cells (j)
rng.Želije (j) = temp
6. Zatvaramo drugu petlju For Next (Izvan naredbe If).
Sljedeće j
Za i = 1 i j = 7, Excel VBA je zamijenio brojeve. To znači da dobivamo 1 na prvom mjestu i 2 na položaju 7. Sada kada imamo 1 na prvom mjestu, usporedit ćemo ovu vrijednost s 5 (za j = 8) i 4 (za j = 9). Nema potrebe mijenjati brojeve (1 je najmanji broj). Na taj način Excel VBA dobiva (za i = 1) najmanji broj na prvom mjestu. Da bi dobio drugi najmanji broj na drugom mjestu, Excel VBA ponavlja potpuno iste korake za i = 2. Da bi dobio treći najmanji broj na trećem mjestu, Excel VBA ponavlja potpuno iste korake za i = 3 itd.
7. Zatvorite prvu petlju For Next (Izvan naredbe If).
Sljedeći i
8. Testirajte svoj program.
Proizlaziti: