Excel'de VBA Dizisi Nedir ve Nasıl Programlanır?

VBA , uzun yıllardır (VBA)Microsoft Office paketinin bir parçası olmuştur . Tam bir VB uygulamasının tam işlevselliğine ve gücüne sahip olmasa da VBA , Office kullanıcılarına (Office)Office ürünlerini entegre etme ve bunlarda yaptığınız işi otomatikleştirme esnekliği sağlar.

VBA'da(VBA) bulunan en güçlü araçlardan biri, tüm veri aralığını dizi adı verilen tek bir değişkene yükleme yeteneğidir. Verileri bu şekilde yükleyerek, çeşitli şekillerde bu veri aralığındaki hesaplamaları değiştirebilir veya gerçekleştirebilirsiniz.

Peki VBA dizisi nedir? Bu makalede, bu soruyu yanıtlayacağız ve bir tanesini kendi VBA komut dosyanızda(your own VBA script) nasıl kullanacağınızı göstereceğiz .

VBA Dizisi Nedir?

Excel'de(Excel) bir VBA dizisi kullanmak çok basittir, ancak dizi kavramını anlamak, hiç kullanmadıysanız biraz karmaşık olabilir.

(Think)Bir diziyi, içinde bölümleri olan bir kutu gibi düşünün . Tek boyutlu dizi, tek satırlık bölümleri olan bir kutudur. İki boyutlu dizi, iki satır kesitli bir kutudur.

Bu "kutu"nun her bölümüne istediğiniz sırayla veri koyabilirsiniz.

VBA betiğinizin başında, VBA dizinizi tanımlayarak bu "kutuyu" tanımlamanız gerekir . Bu nedenle, bir veri kümesini (tek boyutlu bir dizi) tutabilen bir dizi oluşturmak için aşağıdaki satırı yazarsınız.

Dim arrMyArray(1 To 6) As String

Programınızda daha sonra, parantez içindeki bölüme referans vererek bu dizinin herhangi bir bölümüne veri yerleştirebilirsiniz.

arrMyArray(1) = "Ryan Dube"

Aşağıdaki satırı kullanarak iki boyutlu bir dizi oluşturabilirsiniz.

Dim arrMyArray(1 To 6,1 to 2) As Integer

İlk sayı satırı, ikincisi sütunu temsil eder. Yani yukarıdaki dizi 6 satır ve 2 sütunlu bir aralığı tutabilir.

Bu dizinin herhangi bir öğesini aşağıdaki gibi verilerle yükleyebilirsiniz.

arrMyArray(1,2) = 3

Bu, B1 hücresine bir 3 yükleyecektir.

Bir dizi, dizeler, boole, tamsayılar, kayan noktalar ve daha fazlası gibi herhangi bir veri türünü normal bir değişken olarak tutabilir.

Parantez içindeki sayı da bir değişken olabilir. Programcılar , bir dizinin tüm bölümlerini saymak ve elektronik tablodaki veri hücrelerini diziye yüklemek için genellikle bir For Loop kullanır. (Loop)Bunu nasıl yapacağınızı bu makalenin ilerleyen bölümlerinde göreceksiniz.

Excel'de VBA Dizisi Nasıl Programlanır

Bir elektronik tablodan çok boyutlu bir diziye bilgi yüklemek isteyebileceğiniz basit bir programa bakalım.

Örnek olarak, satış temsilcisinin adını, ürününü ve toplam satışını elektronik tablodan çıkarmak istediğiniz bir ürün satış elektronik tablosuna bakalım.

VBA'da(VBA) satırlara veya sütunlara başvurduğunuzda, sol üstten başlayarak satırları ve sütunları(rows and columns) 1'den saydığınızı unutmayın . Yani rep sütunu 3, öğe sütunu 4 ve toplam sütun 7'dir.

Bu üç sütunu 11 satırın tamamına yüklemek için aşağıdaki komut dosyasını yazmanız gerekir.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

Başlık satırını atlamak için, ilk For görünümündeki satır numarasının 1 yerine 2'den başlaması gerektiğini fark edeceksiniz. Bu, hücre değerini yüklerken dizi satır değeri için 1 çıkarmanız gerektiği anlamına gelir. Cells (i, j).Value kullanarak diziye .

VBA Dizi Komut Dosyanızı(Your VBA Array Script) Nereye Eklersiniz?

Excel'e(Excel) bir VBA komut dosyası yerleştirmek için VBA düzenleyicisini kullanmanız gerekir . Buna, Geliştirici(Developer) menüsünü seçip şeridin Kontroller(Controls) bölümünde Kodu Görüntüle'yi(View Code) seçerek erişebilirsiniz .

Menüde Geliştiriciyi(Developer) görmüyorsanız, eklemeniz gerekir. Bunu yapmak için Dosya(File) ve Seçenekler'i(Options) seçerek Excel Seçenekleri penceresini açın.

Açılır menüden seçim komutlarını Tüm Komutlar(All Commands) olarak değiştirin . Soldaki menüden Geliştirici'yi seçin ve sağdaki bölmeye taşımak için Ekle düğmesini(Developer) seçin . (Add)Etkinleştirmek için onay kutusunu seçin ve bitirmek için Tamam'ı seçin.(OK)

Code Editor penceresi açıldığında , sol bölmede verilerinizin bulunduğu sayfanın seçili olduğundan emin olun. Soldaki açılır menüden Çalışma Sayfası'nı ve sağda (Worksheet)Etkinleştir'i(Activate) seçin . Bu, Worksheet_Activate(Worksheet_Activate) () adında yeni bir alt program oluşturacaktır .

Bu işlev, elektronik tablo dosyası her açıldığında çalışır. Kodu, bu alt yordamın içindeki komut dosyası bölmesine yapıştırın.

Bu komut dosyası 12 satır boyunca çalışacak ve 3. sütundaki temsilci adını, 4. sütundaki öğeyi ve 7. sütundaki toplam satışı yükleyecektir.

Her iki For döngüsü de bittiğinde, iki boyutlu arrMyArray dizisi, orijinal sayfadan belirttiğiniz tüm verileri içerir.

Excel VBA'da Dizileri Manipüle Etme

Tüm nihai satış fiyatlarına %5 satış vergisi uygulamak istediğinizi ve ardından tüm verileri yeni bir sayfaya yazmak istediğinizi varsayalım.

Bunu, sonuçları yeni bir sayfaya yazma komutuyla ilkinden sonra başka bir For döngüsü ekleyerek yapabilirsiniz.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

Bu, tüm diziyi , vergi tutarı için %5 ile çarpılan toplamı içeren ek bir satırla birlikte Sayfa2'ye(Sheet2) "kaldırır" .

Ortaya çıkan sayfa böyle görünecek.

Gördüğünüz gibi, Excel'deki (Excel)VBA dizileri son derece kullanışlıdır ve diğer tüm Excel numaraları(any other Excel trick) kadar çok yönlüdür . 

Yukarıdaki örnek, bir dizi için çok basit bir kullanımdır. Çok daha büyük diziler oluşturabilir ve içinde depoladığınız verilere karşı sıralama, ortalama alma veya diğer birçok işlevi gerçekleştirebilirsiniz.

Gerçekten yaratıcı olmak istiyorsanız , iki farklı sayfadan bir dizi hücre içeren iki dizi bile oluşturabilir ve her dizinin öğeleri arasında hesaplamalar yapabilirsiniz.(containing a range of cells)

Uygulamalar sadece hayal gücünüzle sınırlıdır.



About the author

"Serbest çalışan bir Windows ve Office uzmanıyım. Bu araçlarla çalışma konusunda 10 yılı aşkın bir deneyime sahibim ve bunlardan en iyi şekilde yararlanmanıza yardımcı olabilirim. Becerilerim şunları içerir: Microsoft Word, Excel, PowerPoint ve Outlook ile çalışma; web oluşturma sayfalar ve uygulamalar ve müşterilerin iş hedeflerine ulaşmalarına yardımcı olmak."



Related posts