Excel VBA nizovi: vrste i kako ih koristiti s primjerom

โšก Pametni saลพetak

Excel VBA nizovi pohranjuju skupinu povezanih vrijednosti istog tipa podataka pod jednim imenom, kojima se pristupa putem indeksa. Ova stranica objaลกnjava statiฤke i dinamiฤke nizove, jednodimenzionalne, dvodimenzionalne i viลกedimenzionalne nizove, sintaksu deklaracije i obraฤ‘eni primjer punjenja napitaka.

  • ???? Koncept niza: Jedna imenovana memorijska lokacija koja sadrลพi viลกe vrijednosti istog tipa podataka, odvojene indeksom.
  • ๐ŸŽฏ Prednosti: Nizovi grupiraju povezane podatke, smanjuju broj varijabli i ubrzavaju dohvaฤ‡anje i sortiranje podataka.
  • ๐Ÿ“Œ Statiฤki niz: Deklarisano s fiksnom veliฤinom, na primjer Dim ArrayMonth(12) As String, kada je poznat broj elemenata.
  • ๐Ÿ”„ Dinamiฤki niz: Deklarisano prazno pomoฤ‡u Dim ArrayMonth() i dimenzionirano kasnije pomoฤ‡u ReDim kada je broj elemenata nepoznat.
  • ๐Ÿ“ Dimenzije: Niz koristi jedan, dva ili viลกe indeksa za modeliranje pojedinaฤnih popisa, tablica ili viลกerazinskih podataka.
  • ๐Ÿงช Obraฤ‘eni primjer: Naredbeni gumb uฤitava ฤetiri naziva piฤ‡a iz polja u ฤ‡elije radnog lista pomoฤ‡u Sheet1.Cells.

Excel VBA polja

ล to je VBA polje?

Niz je definiran kao memorijska lokacija koja moลพe pohraniti viลกe od jedne vrijednosti. Sve vrijednosti moraju biti iste vrste podataka. Recimo da ลพelite pohraniti popis svojih omiljenih piฤ‡a u jednu varijablu, za to moลพete koristiti VBA polje.

Koriลกtenjem niza, moลพete se pozivati โ€‹โ€‹na povezane vrijednosti pod istim imenom. Moลพete koristiti indeks ili indeks da ih razlikujete. Pojedinaฤne vrijednosti nazivaju se elementima Excel VBA polja. Oni su susjedni od indeksa 0 do najviลกe vrijednosti indeksa.

Ovaj vodiฤ pretpostavlja da koristite Microsoft nadmaลกiti verzija 2013. Znanje se i dalje odnosi na druge verzije Microsoft Excel takoฤ‘er.

Koje su prednosti nizova?

Prije pisanja koda za nizove, korisno je razumjeti zaลกto se isplati koristiti nizove. Slijede neke od prednosti koje nudi VBA funkcija niza.

  1. Grupirajte logiฤki povezane podatke zajedno โ€“ recimo da ลพelite pohraniti popis uฤenika. Moลพete koristiti jednu varijablu niza koja ima odvojene lokacije za kategorije uฤenika, npr. vrtiฤ‡, osnovna, srednja ลกkola, srednja ลกkola itd.
  2. Nizovi olakลกavaju pisanje koda koji se moลพe odrลพavati. Za iste logiฤki povezane podatke, omoguฤ‡uje definiranje jedne varijable, umjesto definiranja viลกe od jedne varijable.
  3. Bolja izvedba โ€“ nakon ลกto je niz definiran, brลพe je dohvaฤ‡ati, sortirati i mijenjati podatke.

Vrste nizova u VBA

VBA podrลพava dvije vrste nizova, naime;

  • statiฤki โ€“ Ove vrste nizova imaju fiksni unaprijed odreฤ‘en broj elemenata koji se mogu pohraniti. Ne moลพe se promijeniti veliฤina tipa podataka statiฤkog polja. Ovo je korisno kada ลพelite raditi s poznatim entitetima kao ลกto su broj dana u tjednu, spol itd.Na primjer: Dim ArrayMonth(12) Kao niz
  • Dinamiฤan โ€“ Ove vrste nizova nemaju fiksni unaprijed odreฤ‘en broj elemenata koji se mogu pohraniti. Ovo je korisno kada radite s entitetima ฤiji broj ne moลพete unaprijed odrediti.Na primjer: Dim ArrayMonth() kao varijanta

Nakon ลกto znate koji tip odgovara vaลกim podacima, sljedeฤ‡i korak je sintaksa deklaracije za svaki od njih.

Sintaksa za deklariranje nizova

Statiฤki nizovi

Sintaksa za deklariranje STATIฤŒKI nizova je kako slijedi:

Dim arrayName (n) as datatype

OVDJE,

Code Akcijski
Dim arrayName (n) tip podataka
  1. Deklarira varijablu polja pod nazivom arrayName s veliฤinom n i tipom podataka. Veliฤina se odnosi na broj elemenata koje niz moลพe pohraniti.

Dinamiฤki nizovi

Sintaksa za deklariranje DINAMIฤŒAN nizova je kako slijedi:

Dim arrayName() as datatype
ReDim arrayName(4)

OVDJE,

Code Akcijski
Vrsta podataka Dim arrayName ().
  1. Deklariลกe varijablu niza pod nazivom arrayName bez navoฤ‘enja broja elemenata
ReDim arrayName(4)
  1. Odreฤ‘uje veliฤinu polja nakon ลกto je polje definirano.

Dimenzije polja

Niz moลพe biti jednodimenzionalan, dvodimenzionalan ili viลกedimenzionalan.

  • Jedna dimenzija: U ovoj dimenziji niz koristi samo jedan indeks. Na primjer, odreฤ‘eni broj ljudi svake dobi.
  • Dvije dimenzije: U ovoj dimenziji niz koristi dva indeksa. Na primjer, broj uฤenika u svakom razredu. Zahtijeva broj razreda i broj uฤenika u svakom razredu
  • Viลกe dimenzija: U ovoj dimenziji niz koristi viลกe od dva indeksa. Na primjer, temperature tijekom dana. (30, 40, 20).

Kako koristiti niz u programu Excel VBA

Nakon ลกto smo obradili teoriju, moลพemo primijeniti niz u stvarnoj radnoj knjizi. Izradit ฤ‡emo jednostavnu aplikaciju. Ova aplikacija popunjava Excel tablicu podacima iz varijable niza. U ovom VBA primjeru niza, uฤinit ฤ‡emo sljedeฤ‡e.

  • Napravite novu Microsoft radnu knjigu programa Excel i spremite je kao radnu knjigu programa Excel s omoguฤ‡enim makronaredbama (*.xlsm)
  • Dodajte naredbeni gumb u radnu knjigu
  • Postavite svojstva naziva i opisa naredbenog gumba
  • Programiranje VBA koji popunjava Excel list

Izvedite ovu vjeลพbu korak po korak,

Korak 1 โ€“ Stvorite novu radnu knjigu

  1. Otvoren Microsoft nadmaลกiti
  2. Spremite novu radnu knjigu kao VBA Arrays.xlsm

Korak 2 โ€“ Dodajte naredbeni gumb

Biljeลกka: Ovaj odjeljak pretpostavlja da ste upoznati s procesom stvaranja suฤelja u excelu. Ako niste upoznati, proฤitajte tutorial VBA Excel kontrola obrasca i ActiveX kontrola. Pokazat ฤ‡e vam kako izraditi suฤelje

  1. Dodajte naredbeni gumb na list

Koristite niz u programu Excel VBA

  1. Postavite svojstvo name na cmdLoadBeverages
  2. Postavite svojstvo naslova na Uฤitavanje piฤ‡a

Vaลกe GUI bi sada trebalo biti kako slijedi

Koristite niz u programu Excel VBA

Korak 3 โ€“ Spremite datoteku

  1. Kliknite na gumb Spremi kao
  2. Odaberite Excel radnu knjigu s omoguฤ‡enim makronaredbama (*.xlsm) kao ลกto je prikazano na slici ispod

Koristite niz u programu Excel VBA

Korak 4 โ€“ Napiลกite kod

Sada ฤ‡emo napisati kod za naลกu aplikaciju

  1. Desnom tipkom miลกa kliknite gumb Uฤitaj piฤ‡a i odaberite prikaz koda
  2. Dodajte sljedeฤ‡i kod u dogaฤ‘aj klika za cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

OVDJE,

Code Akcijski
Dim Drinks (1 do 4) kao niz
  • Deklarira niz varijabli pod nazivom Drinks. Indeks prvog niza je 1, a indeks posljednjeg niza je 4.
Piฤ‡e(1) = โ€œPepsiโ€
  • Dodjeljuje vrijednost Pepsi prvom elementu niza. Drugi sliฤan kod ฤini isto za ostale elemente u nizu.
Sheet1.Cells(1, 1).Value = โ€œMoja omiljena piฤ‡aโ€
  • Zapisuje vrijednost My Favorite Beverages u adresu ฤ‡elije A1. Sheet1 upuฤ‡uje na list, a Cells(1,1) upuฤ‡uje na red broj 1 i stupac 1 (B)
Sheet1.Cells(2, 1).Value = Drinks(1)
  • Zapisuje vrijednost elementa niza s indeksom 1 u red broj dva stupca 1

Testiranje naลกe aplikacije

Nakon ลกto je kod postavljen, posljednji korak je pokretanje gumba i potvrda da niz ispunjava list. Odaberite karticu za razvojne programere i provjerite je li gumb Naฤin dizajna "iskljuฤen". Indikator je da ฤ‡e imati bijelu pozadinu, a ne obojenu (zelenkastu). (Pogledajte sliku ispod)

Testiranje aplikacije u Excelu VBA

Pritisnite gumb Uฤitaj piฤ‡a

Dobit ฤ‡ete sljedeฤ‡e rezultate

Testiranje aplikacije u Excelu VBA

Preuzmite Excel koji sadrลพi gornji kod

Preuzmite gornji Excel Code

Pitanja i odgovori

Statiฤki niz ima fiksnu veliฤinu postavljenu prilikom deklaracije, kao ลกto je Dim Arr(12). Dinamiฤki niz se deklarira praznim pomoฤ‡u Dim Arr() i kasnije mu se mijenja veliฤina pomoฤ‡u ReDim kada broj elemenata nije unaprijed poznat.

ReDim postavlja ili mijenja veliฤinu dinamiฤkog polja nakon ลกto je deklarirano. Dodavanje kljuฤne rijeฤi Preserve, kao u ReDim Preserve Arr(10), zadrลพava postojeฤ‡e vrijednosti prilikom promjene veliฤine; bez Preserve, sve pohranjene vrijednosti se briลกu.

Koristite funkcije LBound i UBound. LBound vraฤ‡a najniลพi indeks, a UBound vraฤ‡a najviลกi indeks. Broj elemenata jednak je UBound(Arr) minus LBound(Arr) plus jedan, ลกto funkcionira i za statiฤke i za dinamiฤke nizove.

Da. AI asistenti poput Copilota generiraju deklaracije nizova i petlje iz obiฤnog zahtjeva, na primjer uฤitavaju deset naziva proizvoda u stupac. Programer lijepi kod u editor i testira ga na kopiji radne knjige.

Da. AI asistenti ฤitaju greลกku "Subscript out of range" i kod, zatim pokazuju na indeks koji prelazi granice polja i predlaลพu ispravak, poput prilagodbe veliฤine ReDima ili brojaฤa petlji. Programer primjenjuje i ponovno testira.

Saลพmite ovu objavu uz: