Bu bölümde makrolar üzerine yazıldığı için VBA'nin ne olduğuna bakacağız.
VBA, Microsoft tarafından geliştirilen gömülü bir programlama dilidir (Visual Basic for Applications anlamına gelir). Bu dil bağımsız değildir, yalnızca MS Office paketindeki süreçlerin otomatikleştirilmesine yöneliktir. VBA, Excel'nin yanı sıra Access, Word ve paketteki diğer programlarda yaygın olarak kullanılmaktadır.
VBA herkesin öğrenebileceği basit bir programlama dilidir. Bunu öğrendikten sonra, Excel komutlarını verebilecek, sütunlarla, satırlarla, hücre değerleriyle ne yapacağınızı, çalışma sayfalarını taşıyabilecek/ekleyebilecek/sıralayabilecek, önceden programlanmış mesajları görüntüleyebilecek, kendi formüllerinizi ve işlevlerinizi yazabilecek ve daha fazlasını yapabileceksiniz. Dilin özü nesneler üzerinde işlem yapmaktır.
VBA koduyla çalışmak için, varsayılan olarak Excel'de zaten kurulu olan bir düzenleyiciye (Visual Basic Editor) ihtiyacımız var. "Alt+F11" tuş kombinasyonuna basarak açabilirsiniz.
VBA'deki bir nesnenin ne olduğunu anlayalım.
VBA Bir nesne bir öğedir, yapısal bir parçacık Excel, yani: kitap, sayfa, aralık, hücre.
VBA nesnelerinin bir hiyerarşisi vardır, yani birbirlerine bağımlıdırlar. Şematik olarak Excel'deki hiyerarşi yapısı şu şekilde temsil edilebilir:
En önemli nesne, Excel programının kendisine karşılık gelen Application'dir. Daha sonra Workbook (kitap), Worksheet (sayfa), Range (aralık veya tek hücre) gelir.
Örneğin, çalışma sayfasındaki "A1" hücresine başvurmak için hiyerarşiyi dikkate alarak aşağıdaki yolu yazmamız gerekir:
Application.Workbooks("Archive").Worksheets("Sheet1").Range("A1")
Böylece, Excel'deki en küçük nesneye - bir hücreye - başvurmayı öğrendik.
Buna karşılık, VBA nesneleri "koleksiyonlara" aittir.
VBA Koleksiyon, aynı sınıftaki nesnelerin (bir dizi kitap, sayfa vb.) oluşturduğu bir gruptur (dizi). Evet, tüm Worksheet nesneleri Worksheets koleksiyonunun öğeleridir. Buna karşılık koleksiyon da bir nesnedir.
Aynı nesneler birden fazla koleksiyona ait olabilir. Örneğin, Worksheet nesneleri aynı zamanda Sheets koleksiyonuna da aittir. Sheets koleksiyonu, çalışma kitabındaki tüm sayfaları içerir; hem sayfa olarak kabul edilen grafikler (Chart) hem de veri sayfaları (Worksheet).
VBA Excel'de aşağıdaki koleksiyonlar mevcuttur:
VBA'deki her nesnenin özellikleri vardır. Örneğin, bir Range nesnesinin Value veya Formula özelliği vardır.
Worksheets("Sheet1").Range("A1").Value veya Worksheets("Sheet1").Range("A1").Formula
Bu örnekte özellik, hücreye girilen değeri veya girilen formülü görüntüler.
Ayrıca, Formula özelliği aracılığıyla yalnızca formülü almakla kalmaz, aynı zamanda onu yazabilirsiniz:
MsgBox Range("A1").Formula - "A1" hücresindeki formülü içeren bir mesaj alacağız;
Range("B12").Formula = "=2+6*100" - "B12" hücresine "=2+6*100" formülünü girin.
Şimdi bir aralığın veya hücrenin içeriğini nasıl değiştirebileceğimize bakalım. Bunun için VBA'da sözde yöntemler ("ne yapmalı" komutları) vardır. Kod yazarken yöntemler nesneden bir noktayla ayrılır, örneğin:
Range("A1").Select veya Cells(1,1).Select
Bu yöntem, (Select) "A1" hücresinin seçileceğini belirtir.
Daha sonra bu hücredeki değeri silelim. Bunun için aşağıdaki kodu yazacağız.
Selection.ClearContents
Burada program seçtiğimizi (Selection) "alır" ve içeriğini temizler (ClearContents).