Arrays dina Visual Basic pikeun Aplikasi

Asép Sunandar Sunarya dina Visual Basic pikeun Aplikasi mangrupakeun struktur nu ilaharna nyimpen susunan variabel patali tipe sarua. Éntri Array diaksés ku indéks numerikna.

Contona, aya tim 20 urang anu ngaran kudu disimpen pikeun pamakéan engké dina kode VBA. Hiji ngan saukur tiasa nyatakeun 20 variabel pikeun nahan unggal nami, sapertos kieu:

Taram Team_Member1 Salaku String Taram Team_Anggota2 Salaku String ... Taram Team_Anggota20 Salaku String

Tapi anjeun tiasa nganggo cara anu langkung saderhana sareng langkung teratur - nyimpen daptar nami anggota tim dina susunan 20 variabel sapertos tali:

Taram Team_Members (1 nepi ka 20) Salaku String

Dina garis anu dipidangkeun di luhur, kami parantos nyatakeun hiji Asép Sunandar Sunarya. Ayeuna hayu urang nulis nilai ka unggal elemen na, kawas kieu:

Anggota_Tim(1) = "John Smith"

Kauntungannana tambahan tina nyimpen data dina Asép Sunandar Sunarya, dibandingkeun ngagunakeun variabel misah, janten semu lamun eta janten diperlukeun pikeun ngalakukeun aksi sarua dina unggal unsur Asép Sunandar Sunarya dina. Upami nami anggota tim disimpen dina 20 variabel anu misah, maka éta bakal nyandak 20 baris kode pikeun nyerat unggal waktos pikeun ngalakukeun tindakan anu sami dina masing-masing. Nanging, upami nami-nami disimpen dina susunan, maka anjeun tiasa ngalakukeun tindakan anu dipikahoyong sareng masing-masing nganggo loop anu saderhana.

Kumaha gawéna ditémbongkeun di handap kalawan conto kode nu prints ngaran unggal anggota tim sequentially dina sél kolom. A lembar kerja Excel aktip.

Pikeun i = 1 Nepi ka 20 Sél(i,1).Nilai = Anggota_Tim(i) Salajengna i

Jelas, gawé bareng hiji Asép Sunandar Sunarya nu nyimpen 20 ngaran jauh kirang pajeulit jeung leuwih akurat ti ngagunakeun 20 variabel misah. Tapi kumaha upami nami ieu sanés 20, tapi 1000? Sareng upami, salian ti éta, diperyogikeun pikeun ngajaga nami kulawarga sareng patronymics nyalira?! Ieu jelas yén éta bakal pas jadi sagemblengna teu mungkin pikeun nanganan volume sapertos data dina kode VBA tanpa bantuan hiji Asép Sunandar Sunarya.

Array multidimensional dina Excel Visual Basic

Array Visual Basic anu dibahas di luhur dianggap hiji diménsi. Ieu ngandung harti yén maranéhna nyimpen daptar basajan tina ngaran. Sanajan kitu, arrays tiasa gaduh sababaraha dimensi. Contona, susunan dua diménsi bisa dibandingkeun jeung grid nilai.

Anggap anjeun hoyong ngahemat angka penjualan poéan pikeun Januari pikeun 5 tim anu béda. Ieu ngabutuhkeun susunan dua diménsi anu diwangun ku 5 sét métrik salami 31 dinten. Hayu urang nyatakeun hiji Asép Sunandar Sunarya kawas kieu:

Taram Jan_Sales_Figures (1 ka 31, 1 ka 5) Salaku Mata Artos

Pikeun ngakses elemen Asép Sunandar Sunarya Jan_Sales_Angka, anjeun kedah nganggo dua indéks anu nunjukkeun dinten bulan sareng nomer paréntah. Contona, alamat unsur nu ngandung angka jualan keur 2-aduh tim pikeun 15 ka Januari bakal ditulis sapertos kieu:

Jan_Sales_Angka(15, 2)

Dina cara nu sami, anjeun tiasa ngadéklarasikeun hiji Asép Sunandar Sunarya kalawan 3 atawa leuwih diménsi - ngan nambahan diménsi tambahan kana deklarasi Asép Sunandar Sunarya sarta ngagunakeun indéks tambahan pikeun nujul ka elemen Asép Sunandar Sunarya ieu.

Ngadéklarasikeun Arrays dina Excel Visual Basic

Baheula dina artikel ieu, urang geus kasampak di sababaraha conto déklarasi arrays di VBA, tapi topik ieu pantes katingal ngadeukeutan. Sapertos anu dipidangkeun, susunan hiji diménsi tiasa dinyatakeun sapertos kieu:

Taram Team_Members (1 nepi ka 20) Salaku String

deklarasi kitu ngabejaan VBA compiler yén Asép Sunandar Sunarya Anggota_Tim diwangun ku 20 variabel nu bisa diaksés dina indéks ti 1 nepi ka 20. Najan kitu, urang bisa mikir panomeran variabel Asép Sunandar Sunarya ti 0 nepi ka 19, nu hal Asép Sunandar Sunarya kudu dinyatakeun kawas kieu:

Taram Team_Members (0 nepi ka 19) Salaku String

Kanyataanna, sacara standar, panomeran elemen Asép Sunandar Sunarya dimimitian ti 0, sarta dina deklarasi Asép Sunandar Sunarya, indéks awal bisa jadi teu dieusian pisan, kawas kieu:

Taram Team_Members(19) Salaku String

Kompiler VBA bakal ngubaran éntri sapertos nyatakeun susunan 20 elemen kalayan indéks tina 0 dugi ka 19.

Aturan anu sami berlaku nalika nyatakeun arrays Visual Basic multidimensional. Sakumaha anu parantos dipidangkeun dina salah sahiji conto, nalika nyatakeun susunan dua diménsi, indéks dimensina dipisahkeun ku koma:

Taram Jan_Sales_Figures (1 ka 31, 1 ka 5) Salaku Mata Artos

Nanging, upami anjeun henteu netepkeun indéks awal pikeun duanana diménsi susunan sareng nyatakeun sapertos kieu:

Taram Jan_Sales_Figures (31, 5) Salaku Mata Artos

teras entri ieu bakal dianggap salaku Asép Sunandar Sunarya dua diménsi, diménsi kahiji ngandung 32 elemen kalayan indéks ti 0 nepi ka 31, sarta diménsi kadua Asép Sunandar Sunarya ngandung 6 elemen kalawan indéks ti 0 nepi ka 5.

Susunan dinamis

Kabéh arrays dina conto di luhur boga angka tetep dimensi. Sanajan kitu, dina loba kasus urang teu nyaho sateuacanna naon ukuran Asép Sunandar Sunarya urang kedah. Urang tiasa kaluar tina kaayaan ku nyatakeun susunan anu ageung, ukuranana pasti bakal langkung ageung tibatan anu dipikabutuh pikeun tugas urang. Tapi solusi sapertos ngabutuhkeun seueur mémori tambahan sareng tiasa ngalambatkeun program. Aya solusi anu langkung saé. Urang bisa ngagunakeun Asép Sunandar Sunarya dinamis - ieu mangrupa Asép Sunandar Sunarya anu ukuranana bisa diatur sarta dirobah sababaraha kali salila palaksanaan makro a.

A array dinamis dinyatakeun ku kurung kosong, kawas kieu:

Taram Team_Members () Salaku String

Salajengna, anjeun bakal kedah dibewarakeun diménsi Asép Sunandar Sunarya salila palaksanaan kode ngagunakeun éksprési ReDim:

ReDim Team_Members(1 nepi ka 20)

Sareng upami nalika palaksanaan kode anjeun kedah ngarobih deui ukuran susunan, maka anjeun tiasa nganggo ekspresi ReDim deui:

Lamun Team_Size > 20 Lajeng Redim Team_Members(1 Pikeun Team_Size) Tamat Lamun

Émut yén ngarobah ukuran array dinamis ku cara ieu bakal nyababkeun leungitna sadaya nilai anu disimpen dina array. Pikeun nyimpen data anu parantos aya dina susunan, anjeun kedah nganggo kecap konci Ngawétkeunditémbongkeun saperti di handap ieu:

Lamun Team_Size > 20 Lajeng ReDim Preserve Team_Members(1 Pikeun Team_Size) Tamat Lamun

Hanjakal kecap konci Ngawétkeun ngan bisa dipaké pikeun ngarobah wates luhur hiji diménsi Asép Sunandar Sunarya. Batesan handap tina hiji Asép Sunandar Sunarya teu bisa dirobah ku cara kieu. Ogé, lamun Asép Sunandar Sunarya ngabogaan sababaraha diménsi, teras nganggo keyword nu Ngawétkeun, ngan diménsi panungtungan Asép Sunandar Sunarya bisa dirobah ukuranana.

Leave a Reply