Uygulama için Visual Basic'te Diziler

Visual Basic for Application'daki diziler, genellikle aynı türdeki ilgili değişken kümelerini depolayan yapılardır. Dizi girişlerine sayısal dizinleriyle erişilir.

Örneğin, VBA kodunda daha sonra kullanılmak üzere isimlerinin kaydedilmesi gereken 20 kişilik bir ekip var. Her adı tutmak için basitçe 20 değişken bildirilebilir, şöyle:

Dim Team_Member1 As String Dim Team_Member2 As String ... Dim Team_Member20 As String

Ancak çok daha basit ve daha organize bir yol kullanabilirsiniz – takım üyesi adlarının bir listesini aşağıdaki gibi 20 değişkenlik bir dizide saklayın: dizi:

Dim Team_Members(1 ila 20) As String

Yukarıda gösterilen satırda bir dizi tanımladık. Şimdi her bir elemanına aşağıdaki gibi bir değer yazalım:

Team_Members(1) = "John Smith"

Ayrı değişkenler kullanmaya kıyasla bir dizide veri depolamanın ek bir avantajı, dizinin her bir öğesi üzerinde aynı eylemi gerçekleştirmek gerektiğinde ortaya çıkar. Ekip üyelerinin adları 20 ayrı değişkende saklansaydı, her biri üzerinde aynı eylemi gerçekleştirmek için her seferinde 20 satır kod yazmak gerekirdi. Ancak, adlar bir dizide saklanıyorsa, istediğiniz eylemi basit bir döngü kullanarak her biriyle gerçekleştirebilirsiniz.

Nasıl çalıştığı aşağıda, sütun hücrelerinde sırayla her bir ekip üyesinin adını yazdıran bir kod örneği ile gösterilmiştir. A aktif Excel çalışma sayfası.

i = 1 ila 20 Hücre(i,1) için.Value = Team_Members(i) Sonraki i

Açıkçası, 20 isim depolayan bir diziyle çalışmak, 20 ayrı değişken kullanmaktan çok daha az hantal ve daha doğrudur. Peki ya bu isimler 20 değil de 1000 ise? Ve ayrıca, soyadlarını ve soyadını ayrı tutmak gerekirse?! Bir dizinin yardımı olmadan VBA kodunda böyle bir veri hacmini işlemenin yakında tamamen imkansız hale geleceği açıktır.

Excel Visual Basic'te çok boyutlu diziler

Yukarıda tartışılan Visual Basic dizileri tek boyutlu olarak kabul edilir. Bu, basit bir ad listesi depoladıkları anlamına gelir. Ancak dizilerin birden çok boyutu olabilir. Örneğin, iki boyutlu bir dizi, bir değerler ızgarasıyla karşılaştırılabilir.

Diyelim ki 5 farklı takım için Ocak ayı günlük satış rakamlarını kaydetmek istiyorsunuz. Bu, 5 gün boyunca 31 set metrikten oluşan iki boyutlu bir dizi gerektirecektir. Şöyle bir dizi tanımlayalım:

Dim Jan_Sales_Rakamlar (1 - 31, 1 - 5) Para Birimi Olarak

Dizi öğelerine erişmek için Ocak_Satış_Rakamları, ayın gününü ve komut numarasını gösteren iki dizin kullanmanız gerekir. Örneğin, satış rakamlarını içeren bir öğenin adresi 2-oh için takımlar 15. Ocak şöyle yazılır:

Jan_Sales_Rakamlar(15, 2)

Aynı şekilde, 3 veya daha fazla boyutlu bir dizi bildirebilirsiniz – sadece dizi bildirimine ek boyutlar ekleyin ve bu dizinin öğelerine atıfta bulunmak için ek dizinler kullanın.

Excel Visual Basic'te Dizi Bildirme

Bu makalenin başlarında, VBA'da dizi bildirmeye ilişkin birkaç örneğe zaten baktık, ancak bu konuya daha yakından bakmayı hak ediyor. Gösterildiği gibi, tek boyutlu bir dizi şu şekilde bildirilebilir:

Dim Team_Members(1 ila 20) As String

Böyle bir bildirim, VBA derleyicisine dizinin Takım üyeleri 20'den 1'ye kadar olan indekslerde erişilebilen 20 değişkenden oluşur. Ancak, dizi değişkenlerimizi 0'dan 19'a kadar numaralandırmayı düşünebiliriz, bu durumda dizi şöyle bildirilmelidir:

Dim Team_Members(0 ila 19) As String

Aslında, varsayılan olarak, dizi öğelerinin numaralandırılması 0'dan başlar ve dizi bildiriminde, ilk dizin şu şekilde hiç belirtilmeyebilir:

Team_Members(19)'u Dize Olarak Karartın

VBA derleyicisi, böyle bir girişi 20 ile 0 arasında indekslere sahip 19 elemanlı bir dizi bildirmek gibi değerlendirecektir.

Aynı kurallar, çok boyutlu Visual Basic dizilerini bildirirken de geçerlidir. Örneklerden birinde zaten gösterildiği gibi, iki boyutlu bir dizi bildirilirken, boyutlarının indeksleri virgülle ayrılır:

Dim Jan_Sales_Rakamlar (1 - 31, 1 - 5) Para Birimi Olarak

Ancak, dizinin her iki boyutu için bir başlangıç ​​dizini belirtmez ve bunu şöyle bildirirseniz:

Dim Jan_Sales_ Figures(31, 5) Para Birimi Olarak

daha sonra bu girdi, ilk boyutu 32 ila 0 arasında indeksli 31 eleman içeren ve dizinin ikinci boyutu 6 ila 0 arasında indeksli 5 eleman içeren iki boyutlu bir dizi olarak ele alınacaktır.

Dinamik diziler

Yukarıdaki örneklerdeki tüm diziler sabit sayıda boyuta sahiptir. Ancak birçok durumda dizimizin ne büyüklükte olması gerektiğini önceden bilemeyiz. Büyüklüğü kesinlikle görevimiz için gerekenden daha büyük olacak büyük bir dizi ilan ederek durumdan çıkabiliriz. Ancak böyle bir çözüm çok fazla bellek gerektirecek ve programı yavaşlatabilir. Daha iyi bir çözüm var. Dinamik bir dizi kullanabiliriz – bu, boyutu bir makronun yürütülmesi sırasında herhangi bir sayıda ayarlanabilen ve değiştirilebilen bir dizidir.

Dinamik bir dizi, aşağıdaki gibi boş parantezlerle bildirilir:

Team_Members()'ı Dize Olarak Karartın

Ardından, ifadeyi kullanarak kod yürütme sırasında dizinin boyutunu bildirmeniz gerekecektir. Yeniden Karartma:

ReDim Team_Members(1 - 20)

Kodun yürütülmesi sırasında dizinin boyutunu tekrar değiştirmeniz gerekirse, ReDim ifadesini tekrar kullanabilirsiniz:

Team_Size > 20 ise ReDim Team_Members(1 To Team_Size) End If

Dinamik bir diziyi bu şekilde yeniden boyutlandırmanın dizide depolanan tüm değerlerin kaybolmasına neden olacağını unutmayın. Zaten dizide bulunan verileri depolamak için anahtar kelimeyi kullanmanız gerekir. KorumakAşağıda gösterildiği gibi:

Team_Size > 20 ise ReDim Preserve Team_Members(1 To Team_Size) End If

ne yazık ki anahtar kelime Korumak yalnızca bir dizi boyutunun üst sınırını değiştirmek için kullanılabilir. Bir dizinin alt sınırı bu şekilde değiştirilemez. Ayrıca, dizinin birden fazla boyutu varsa, o zaman anahtar kelimeyi kullanın. Korumak, dizinin yalnızca son boyutu yeniden boyutlandırılabilir.

Yorum bırak