Vba kullanarak bir dizinin uzunluğu nasıl elde edilir?
VBA’da bir dizinin uzunluğunu elde etmek, o dizide bulunan öğelerin sayısını saymak anlamına gelir. Bunun için en düşük elementi ve en yüksek elementi bilmeniz gerekir. Bunu elde etmek için sırasıyla üst limit ve alt limiti döndüren UBOUND ve LBOUND fonksiyonlarını kullanabilirsiniz.
Bunun dışında bir elektronik tablo işlevi olan COUNTA’yı da kullanabilirsiniz. Ve bu eğitimde her iki yöntemi de göreceğiz, böylece bunlardan herhangi birini size uygun olarak kullanabilirsiniz.
Bir dizinin boyutunu alma adımları
Burada ayların listesini ve her aya ait satış miktarını içeren bir tablomuz var.
- Satırları ve sütunları olan, doğru şekilde beyan edilmiş bir tablonuz olduğundan emin olun.
- Bundan sonra dizinin sınırlarını saklamak için iki değişken daha (çünkü iki boyutlu bir dizimiz var).
- Daha sonra dizinin üst sınırını elde etmek için Ubound işlevini ve ardından alt sınırını elde etmek için Lbound işlevini kullanmanız gereken bir formül kullanmanız gerekir.
- İki boyutlu bir diziniz olduğundan, ikinizin de boyutlara bağlı olması ve bu değeri değişkenlere ayarlamanız gerekir.
- Sonunda Ubound ve Lbound’dan elde ettiğiniz uzunlukları üst ve alt sınır olarak çarpın.
İşte kodun tamamı.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox iCount1 * iCount2
Not: Yazının başında sizlerle paylaştığım tabloda toplam 13 satırımız var mı diye merak ediyorsunuzdur.
Ancak ilk satır başlık olduğu için 13 satırlık bir tablo kullandık. Ve burada bildirilen dizinin herhangi bir öğe içerip içermediğini kontrol etmek için IF STATEMENT ve ISEMPTY işlevini kullandık.
Dim yearSales(1 To 12, 1 To 2) As Integer Dim iCount1 As Integer, iCount2 As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount1 = UBound(yearSales, 1) - LBound(yearSales, 1) + 1 iCount2 = UBound(yearSales, 2) - LBound(yearSales, 2) + 1 MsgBox "This array has " & iCount1 * iCount2 & " element(s)."
Dizi uzunluğunu almak için COUNTA kullanma
Bildiğiniz gibi dizi, tek boyutlu veya çok boyutlu şekilde yapılandırılmış öğeler kümesidir ve bu öğeleri tek seferde saymak için COUNTA işlevini ( elektronik tablo işlevi ) kullanabilirsiniz.
Aşağıdaki kodda, daha önce bildirdiğiniz diziyi kullandınız ve ardından işlevin döndürdüğü öğe sayısını depolamak için bir değişken kullandınız.
Gördüğünüz gibi, döndürdüğü sonuç 24’tür, bu da dizideki toplam öğe sayısıdır.
Dim yearSales(1 To 12, 1 To 2) As Integer iCount = WorksheetFunction.CountA(yearSales) MsgBox iCount
Dikkat etmeniz gereken bir şey var, bu yöntem her durumda kullanmak için ideal olmayacaktır, bu nedenle daha önce tartıştığımız yöntemi kullanmak her zaman iyidir.
Bildirilen dizinin boş olup olmadığını ilk kontrol etmek için de kod yazabilirsiniz.
Dim yearSales(1 To 12, 1 To 2) As Integer If IsEmpty(yearSales) = 0 Then MsgBox "This array has zero elements." Else iCount = WorksheetFunction.CountA(yearSales) MsgBox "This array has " & iCount & " element(s)."