Excel VBA Dizileri: Türleri ve Kullanım Örnekleri

⚡ Akıllı Özet

Excel VBA dizileri, aynı veri türündeki ilişkili değer gruplarını tek bir ad altında depolar ve bu değerlere bir indeks aracılığıyla erişilir. Bu sayfada statik ve dinamik diziler, tek, iki ve çok boyutlu diziler, bildirim sözdizimi ve örnek bir içecek yükleme işlemi açıklanmaktadır.

  • ???? Dizi Kavramı: Aynı veri türüne ait birçok değeri bir indeksle ayırarak tutan, tek bir adlandırılmış bellek konumu.
  • 🎯 Avantajları: Diziler, ilgili verileri gruplandırır, değişken sayısını azaltır ve veri alma ve sıralama işlemlerini hızlandırır.
  • 📌 Statik Dizi: Örneğin, eleman sayısı bilindiğinde, Dim ArrayMonth(12) As String gibi sabit bir boyutla tanımlanır.
  • 🔄 Dinamik Dizi: ArrayMonth() `Dim` ile boş olarak tanımlanır ve eleman sayısı bilinmediğinde daha sonra `ReDim` kullanılarak boyutlandırılır.
  • 📐 Boyutlar: Bir dizi, tekli listeleri, tabloları veya çok seviyeli verileri modellemek için bir, iki veya daha fazla dizin kullanır.
  • 🧪 Örnek Uygulama: Bir komut düğmesi, Sheet1.Cells kullanarak bir diziden dört içecek adını çalışma sayfası hücrelerine yükler.

Excel VBA Dizileri

VBA Dizisi nedir?

Dizi, birden fazla değeri saklayabilen bir bellek konumu olarak tanımlanır. Değerlerin tümü aynı veri türünde olmalıdır. Diyelim ki favori içeceklerinizin listesini tek bir değişkende saklamak istiyorsunuz, bunu yapmak için VBA dizisini kullanabilirsiniz.

Bir dizi kullanarak ilgili değerlere aynı adla başvurabilirsiniz. Bunları birbirinden ayırmak için bir indeks veya alt simge kullanabilirsiniz. Bireysel değerlere Excel VBA dizisinin öğeleri denir. Bunlar indeks 0'dan en yüksek indeks değerine kadar bitişiktir.

Bu eğitimde kullandığınız varsayılmaktadır. Microsoft Excel sürüm 2013. Bilgiler hala diğer sürümler için geçerlidir. Microsoft Excel'in de.

Dizilerin Avantajları Nelerdir?

Dizi kodu yazmadan önce, dizilerin neden kullanılmaya değer olduğunu anlamak faydalı olacaktır. Aşağıda VBA dizi fonksiyonlarının sunduğu bazı avantajlar yer almaktadır.

  1. Mantıksal olarak ilişkili verileri bir arada gruplayın; diyelim ki öğrencilerin bir listesini depolamak istiyorsunuz. Anaokulu, ilkokul, ortaokul, lise vb. öğrenci kategorileri için ayrı konumlara sahip tek bir dizi değişkeni kullanabilirsiniz.
  2. Diziler bakımı yapılabilir kod yazmayı kolaylaştırır. Aynı mantıksal olarak ilişkili veriler için birden fazla değişken tanımlamak yerine tek bir değişken tanımlamanıza olanak tanır.
  3. Daha iyi performans: Bir dizi tanımlandıktan sonra verileri almak, sıralamak ve değiştirmek daha hızlı olur.

VBA'daki Dizi Türleri

VBA iki tür diziyi destekler;

  • Statik – Bu tür diziler, depolanabilecek önceden belirlenmiş sabit sayıda öğeye sahiptir. Statik Dizinin veri türünün boyutu değiştirilemez. Bunlar, haftadaki gün sayısı, cinsiyet vb. gibi bilinen varlıklarla çalışmak istediğinizde kullanışlıdır.Örnek: Dim ArrayMonth(12) As String
  • Hareketlilik – Bu tür dizilerin depolanabilecek önceden belirlenmiş sabit sayıda öğesi yoktur. Bunlar, sayısını önceden belirleyemediğiniz varlıklarla çalışırken kullanışlıdır.Örnek: Dim ArrayMonth() Değişken Olarak

Verilerinize hangi türün uygun olduğunu belirledikten sonraki adım, her birinin bildirim sözdizimini belirlemektir.

Dizileri bildirme sözdizimi

Statik diziler

Bildirmek için sözdizimi STATİK diziler aşağıdaki gibidir:

Dim arrayName (n) as datatype

İŞTE,

Code Action
Dim diziAdı (n) veri türü
  1. n boyutunda ve veri türünde arrayName adlı bir dizi değişkeni bildirir. Size, dizinin depolayabileceği eleman sayısını ifade eder.

Dinamik diziler

Bildirmek için sözdizimi DİNAMİK diziler aşağıdaki gibidir:

Dim arrayName() as datatype
ReDim arrayName(4)

İŞTE,

Code Action
Dim diziAdı () veri türü
  1. Eleman sayısını belirtmeden arrayName adında bir dizi değişkeni bildirir
ReDim diziAdı(4)
  1. Dizi tanımlandıktan sonra dizi boyutunu belirtir.

Dizi Boyutları

Bir dizi tek boyutlu, iki boyutlu veya çok boyutlu olabilir.

  • Tek boyut: Bu boyutta dizi yalnızca bir dizin kullanır. Örneğin her yaştan birkaç kişi.
  • İkili boyutlar: Bu boyutta dizi iki indeks kullanır. Örneğin her sınıfta belirli sayıda öğrenci var. Her sınıftaki sınıf sayısını ve öğrenci sayısını gerektirir.
  • Çok boyutlu: Bu boyutta dizi ikiden fazla indeks kullanır. Örneğin gündüz sıcaklıkları. (30, 40, 20).

Excel VBA'da Dizi nasıl kullanılır

Teoriyi ele aldığımıza göre, diziyi gerçek bir çalışma kitabında uygulamaya koyabiliriz. Basit bir uygulama oluşturacağız. Bu uygulama, bir dizi değişkeninden gelen verilerle bir Excel sayfasını dolduracaktır. Bu VBA Dizi örneğinde, aşağıdaki işlemleri yapacağız.

  • Yeni bir tane oluştur Microsoft Excel çalışma kitabını açın ve Excel Makro Etkin Çalışma Kitabı (*.xlsm) olarak kaydedin
  • Çalışma kitabına komut düğmesi ekleme
  • Komut düğmesinin adını ve resim yazısı özelliklerini ayarlama
  • Excel sayfasını dolduran VBA'yı programlamak

Bu egzersizi adım adım yapalım.

Adım 1 – Yeni bir çalışma kitabı oluşturun

  1. Açılış Microsoft Excel
  2. Yeni çalışma kitabını VBA Arrays.xlsm olarak kaydedin

Adım 2 – Bir komut düğmesi ekleyin

Not: Bu bölümde excel'de arayüz oluşturma sürecine aşina olduğunuz varsayılmaktadır. Eğer aşina değilseniz, öğreticiyi okuyun VBA Excel Form Kontrolü ve ActiveX Kontrolü. Arayüzün nasıl oluşturulacağını size gösterecek

  1. Sayfaya bir komut düğmesi ekleme

Excel VBA'da Diziyi Kullanma

  1. Name özelliğini cmdLoadBeverages olarak ayarlayın
  2. Altyazı özelliğini İçecek Yükle olarak ayarlayın

GUI'niz şimdi aşağıdaki gibi olmalı

Excel VBA'da Diziyi Kullanma

Adım 3 – Dosyayı kaydedin

  1. Farklı kaydet butonuna tıklayın
  2. Aşağıdaki resimde gösterildiği gibi Excel Makro Etkin Çalışma Kitabı'nı (*.xlsm) seçin

Excel VBA'da Diziyi Kullanma

Adım 4 – Kodu yazın

Şimdi uygulamamızın kodunu yazacağız.

  1. İçecekleri Yükle düğmesine sağ tıklayın ve kodu görüntüle'yi seçin
  2. cmdLoadBeverages'ın tıklama olayına aşağıdaki kodu ekleyin
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

İŞTE,

Code Action
Dim İçecekler(1'den 4'e) As String
  • Drinks adında bir dizi değişkeni bildirir. İlk dizi indeksi 1 ve son dizi indeksi 4'tür.
İçecekler(1) = “Pepsi”
  • İlk dizi öğesine Pepsi değerini atar. Diğer benzer kod, dizideki diğer öğeler için de aynısını yapar.
Sheet1.Cells(1, 1).Value = “En Sevdiğim İçecekler”
  • A1 hücre adresine Favori İçeceklerim değerini yazar. Sayfa1 sayfaya başvuruda bulunur ve Hücreler(1,1) 1 numaralı satıra ve 1 numaralı sütuna başvuruda bulunur (B)
Sayfa1.Hücreler(2, 1).Değer = İçecekler(1)
  • İndeks 1 olan dizi elemanının değerini 1. sütunun ikinci satırına yazar.

Uygulamamızı test etme

Kod yerleştirildikten sonra, son adım düğmeyi çalıştırmak ve dizinin sayfayı doldurduğunu doğrulamaktır. Geliştirici sekmesini seçin ve Tasarım modu düğmesinin "kapalı" olduğundan emin olun. Gösterge, renkli (yeşilimsi) bir arka plan yerine beyaz bir arka plana sahip olmasıdır. (Aşağıdaki resme bakın)

Excel VBA'da Bir Uygulamayı Test Etme

İçecek Yükle butonuna tıklayın

Aşağıdaki sonuçları elde edeceksiniz

Excel VBA'da Bir Uygulamayı Test Etme

Yukarıdaki kodu içeren Excel'i indirin

Yukarıdaki Excel dosyasını indirin. Code

SSS

Statik diziler, tanımlama sırasında sabit bir boyuta sahiptir, örneğin Dim Arr(12). Dinamik diziler ise Dim Arr() ile boş olarak tanımlanır ve eleman sayısı önceden bilinmediğinde ReDim kullanılarak daha sonra yeniden boyutlandırılır.

ReDim, dinamik bir dizinin boyutunu tanımlandıktan sonra ayarlar veya değiştirir. ReDim Preserve Arr(10) örneğinde olduğu gibi Preserve anahtar kelimesini eklemek, yeniden boyutlandırma sırasında mevcut değerleri korur; Preserve olmadan, depolanan tüm değerler silinir.

LBound ve UBound fonksiyonlarını kullanın. LBound en düşük indeksi, UBound ise en yüksek indeksi döndürür. Eleman sayısı, UBound(Arr) eksi LBound(Arr) artı bir'e eşittir ve bu hem statik hem de dinamik diziler için geçerlidir.

Evet. Copilot gibi yapay zeka asistanları, örneğin on ürün adını bir sütuna yüklemek gibi basit bir istekten dizi bildirimleri ve döngüler oluşturur. Geliştirici kodu editöre yapıştırır ve çalışma kitabının bir kopyası üzerinde test eder.

Evet. Yapay zekâ asistanları "Dizin aralığı dışında" hatasını ve kodu okur, ardından dizi sınırlarını aşan dizini işaret eder ve ReDim boyutunu veya döngü sayacını ayarlamak gibi bir düzeltme önerir. Geliştirici bunu uygular ve yeniden test eder.

Bu yazıyı şu şekilde özetleyin: