Excel VBA Dizisi nasıl kullanılır?
Makroları, imleci makronun üzerine getirip F5 tuşuna basarak Visual Basic Düzenleyicisi'nden veya Makrolar iletişim kutusunu açarak (ALT+F8) çalıştırılacak makroyu seçip Çalıştır'ı tıklatarak Excel'den çalıştırabilirsiniz. Bu makroları kullanarak Visual Basic Düzenleyicisi'nden çalıştırmak en iyisidir. Hata Ayıklama > İçeri Gir (F8'e basarak) böylece onları çalışırken izleyebilirsiniz. Talimat Geliştirici Sekmesi Şeritte değilse…
- Excel'i açın.
- VBA Düzenleyicisine gidin (Alt + F11 tuşlarına basın)
- Hemen Pencereye gidin. ( Ctrl + G)
- Kodun Altına Yazınız.
- Application.ShowDevTools = Doğru
Excel'de VBA kodu nasıl eklenir
- git geliştirici Sekme > kod Grup > Visual Basic
- Tıklamak Sokmak > Modül.
- Sizin için bir Boş Modül açacaktır.
- Verilen kodu o Modüle Yaz / Yapıştır
Excel'de VBA kodu nasıl çalıştırılır
- Kod arasında herhangi bir yeri seçin, Alt… Alt Alt
- Çalıştıra tıkla & Alt Çalıştır veya F5
Statik dizi değişkenleri
Bilgileri depolamak için birkaç benzersiz değişken kullanmak yerine bir dizi değişkeni kullanabilirsiniz.
Dizide kaç tane eleman saklamanız gerektiğini bildiğinizde, bunun gibi bir statik dizi değişkeni kullanabilirsiniz:
kod
Alt TestStaticArray()
' çalışma kitabındaki 10 ismi MyNames() dizi değişkeninde saklar
Dim MyNames(1 ila 10) As String ' statik bir dizi değişkeni bildirir
iCount'u Tamsayı Olarak Karartın
iCount için = 1 BuWorkbook.Sheets.Count'a
MyNames(iCount) = ThisWorkbook.Sheets(iCount).Name
Debug.Adlarımı Yazdır(iCount)
Sonraki iCount
Erase MyNames() ' değişken içeriğini siler, biraz bellek boşaltır
Alt Bitiş
kodunu çöz
MyNames(1'den 10'a) As String
İçinde 10 öğe tutabilen tek bir doğrulanabilir MyNames'i bir String olarak boyutlandırdık. Yani MyNames doğrulanabilir bir Dizi türüdür.
iCount'u Tamsayı Olarak Karartın
Yalnızca Sayısal Tamsayı türü Değeri tutabilen bir Tamsayı olarak tek bir değişken iCount bildirdik
iCount için = 1 BuWorkbook.Sheets.Count'a
ThisWorkbook.Sheets.Count bize bir Çalışma Kitabındaki Sayfa Sayısını verecektir. ThisWorkbook, kodun yazıldığı Çalışma Kitabını ifade eder.
MyNames(iCount) = ThisWorkbook.Sheets(iCount).Name
Bir döngü kullanarak, her sayfanın adını MyNames adlı tek bir doğrulanabilire atadık. MyNames, doğrulanabilir bir Dizi türüdür, bu nedenle her sayfa adını dizinin her öğesinde saklar.
Debug.Print MyNames(iCount)
Değeri bir dizinin her bir öğesine atadıktan hemen sonra, aynısını ImmediateWindow'da, varsayılan olarak VBA penceresinin alt kısmında yazdıracaktır. Her bir değerin atamasını görüntüleyebilir ve değerini ImmediateWindow'da görüntüleyebilirsiniz.
Sonraki iCount
Next, Excel VBA'da For Loop'a, çalışma kitabında iCount Sayacını artırarak, iCount Toplam Sayfa Sayısına ulaşana kadar aynı görevi tekrarlamasını söylemek için kullanılır.
Dinamik dizi değişkenleri
Dinamik dizi değişkenleri, önceden kaç tane öğe hakkında bilgi depolamanız gerektiğini bilmediğiniz durumlarda kullanışlıdır.
Dizi boyutu hakkında herhangi bir bilgi vermemeniz dışında, dinamik dizi değişkenlerini statik dizi değişkeni gibi bildirirsiniz.
Yukarıdaki örnekte (MyNames(1'den 10'a) As String) Sayfa sayısı 10'dan büyükse, MyNames 10'dan fazla Öğe depolayamayacağından bir hata olacaktır.
kod
Alt TestDynamicArray()
' çalışma kitabındaki tüm isimleri MyNames() dizi değişkeninde saklar
Dim MyNames() As String ' dinamik bir dizi değişkeni bildirir
iCount'u Tamsayı Olarak Karartın
Tam Sayı Olarak Dim Max
Max = ThisWorkbook.Sheets.Count ' maksimum dizi boyutunu bulur
ReDim MyNames(1 To Max) ' dizi değişkenini gerekli boyutta bildirir
iCount için = 1'den Maks'a
MyNames(iCount) = ThisWorkbook.Sheets(iCount).Name
MsgBox MyNames(iCount)
Sonraki iCount
Erase MyNames() ' değişken içerikleri siler, biraz bellek boşaltır
Alt Bitiş
kodunu çöz
Dim MyNames() As String
Doğrulanabilir addan sonra open & close Paranthesis nedeniyle bir Array türü olan tek bir doğrulanabilir MyNames'i String olarak boyutlandırdık, ancak UpperLevel'ini sağlamadığımız için içinde herhangi bir veri depolayamıyoruz.
ReDim MyNames(1'den Maks'a)
Redim, Diziyi yeniden Boyutlandırmak için kullanılır, Şimdi Dizi Tipi Doğrulanabilir'in üst seviyesini atayacaktır.
Bu durumda Çalışma Kitabındaki toplam sayfa sayısı (Max = ThisWorkbook.Sheets.Count)
MsgBox MyNames(iCount)
Son örnekte, Immediate Penceresinde Değişkenlerdeki Değeri yazdırdık, bu sefer aşağıdaki gibi görünecek bir MessageBox içindeki değeri yazdırıyoruz…
1000 öğeli bir dizi değişkenine ihtiyacınız olacağını biliyorsanız, statik bir değişken kullanın. Dezavantajı, yalnızca 10 öğe hakkında bilgi depoladığınız durumlarda da, her seferinde 1000 öğe için bellek kullanmanızdır. Dinamik bir dizi değişkeni kullanırsanız, belleği daha verimli kullanırsınız.
Bazen dizi değişkeninin ne kadar büyük olması gerektiğini hesaplamak mümkün değildir. Bu durumlarda, dizi değişkeninin boyutunun gerektiği gibi arttırılması gerekir. kullandığınızda Yeniden Karartma-dizi değişken boyutunu değiştirmek için ifade, değişken içeriğin silinmesini önlemek için değişken içeriği de silinir. yeniden karart dizi değişkenini kullanmanız gerekecek ReDim Koru-Beyan.
kod
Alt GetFileNameList()
' tüm dosya adlarını geçerli klasörde saklar
Dim FolderFiles() As String ' dinamik bir dizi değişkeni bildirir
Dim tmp As String, fCount As Integer
fSayı = 0
tmp = Dir("D:\Test\*.*")
tmp Boşken
fCount = fCount + 1
ReDim Klasör Dosyalarını Koru (1'den fCount'a)
' dizi değişkenini tekrar bildirir (boyut+1)
FolderFiles(fCount) = tmp
tmp = Yön
Wend
MsgBox fCount & " dosya adları " & CurDir klasöründe bulunur
Erase FolderFiles ' değişken içerikleri siler, biraz bellek boşaltır
Alt Bitiş
kodunu çöz
Dim FolderFiles() As String
Doğrulanabilir adından sonra parantez açma ve kapama nedeniyle bir Dizi türü olan tek bir doğrulanabilir FolderFiles'ı String olarak boyutlandırdık, ancak UpperLevel'ini sağlamadığımız için içinde herhangi bir veri depolayamıyoruz.
tmp = Dir("D:\Test\*.*")
Dir komutu, bir dizindeki tüm dosya ve klasörlerin adını tutabilen bir gezgin olarak çalışır. Ayrıca tüm dosyaları belirli kriterlere göre sınırlayabilirsiniz. Dir("D:\Test\*.pdf") tüm dosyaları yalnızca PDF dosyaları veya uzantılarıyla sınırlayacaktır.
tmp Boşken
Excel VBA'da For döngüsü yerine bu sefer aynı işlemi Excel VBA WHILE LOOP kullanarak tekrarlıyoruz, burada döngüyü sonlandıracak ölçüt tmp not equal to empty olarak ayarlandı. Böylece, tmp doğrulanabilir herhangi bir değer olana kadar, döngü çalışacaktır.
ReDim Klasör Dosyalarını Koru (1'den fCount'a)
Dizi doğrulanabilir Klasör Dosyalarının başlangıç konumunda herhangi bir üst düzeyi yoktur. Ancak her tekrarda ReDim komutu ile üst seviyesini yükseltecektir. İlk çalıştırmada 1, ardından 2… ve bu şekilde, fCount'a kadar. Ancak üst seviyeyi her artırdığınızda, önceden atanmış tüm değişkenleri kaybeder. Preserve komutunu kullanarak zaten atanmış değeri tutabilir veya saklayabiliriz.
Wend
Wend, VBA'da For Loops'a kriterler karşılanana kadar aynı görevi tekrar etmesini söylerdi.
MsgBox fCount & " dosya adları " & CurDir klasöründe bulunur
Her tekrarda fcout +1 ile artacak ve nihai değeri o dizinde / Klasörde bulunan dosya sayısı olacaktır. CurDir komutu, geçerli Dizinin adını verir. Bu durumda “D:\Test”