1. VBA Nedir
Excel’in en güçlü özelliklerinden biri de kendi ara yüzlerinizi, işlevlerinizi geliştirerek Excel’in yeteneklerini arttırmanıza izin veren Visual Basic for Applications denilen ve temelde Visual Basic 6 temelli bir makro yazılım diline izin vermesidir. Bu yazılım dili Excel ile sıklıkla yaptığınız işlemleri hızlandırmak için oldukça fazla imkan sunsa da modern yazılım dilleri ile kıyaslandığında oldukça fazla kısıtlamaya da sahiptir. Ben VBA ile ilgili bilgiler aktardıkça farklı yazılım dilleri ile kıyaslamaları da ekliyor olacağım.
VBA’nın VB6’dan en temel farkı, VB ile yazdığınız programları derleyerek bağımsız bir program haline getirebilirsiniz. Ancak VBA’nın çalışmak için bir ana programa ihtiyaç duyar, ana program bir sanal makine oluşturur. Yani VBA kodun çalışabilmesi için Excel veya herhangi bir VBA destekleyen uygulamanın hali hazırda çalışıyor olması gerekli. Ve sanal makine üzerinde çalışıyor olması kodun siz onu çalıştırdığınız esnada derleniyor olması anlamına gelir. Bu da derlenmiş bir programdan daha yavaş çalışması demektir. Tabii bu hız farkını sizin anlayabilmeniz pek mümkün değil. Modern donanımlarda bu hız farkı çok düşüktür.
Ek olarak VBA ile örnek olarak Excel içinden farklı programları çalıştırarak onlara veri aktarma veya onlardan veri almak gibi işlemleri de yapabilirsiniz. İşin bir güzel tarafı da Microsoft harici başka firmaların da VBA desteğine sahip programları mevcut ve siz bu sayede bu programlar ile iletişim kurabilirsiniz. Örnek olarak AutoCAD programının izin verdiği ölçüde bazı bilgileri okuyarak bunları bir Excel sayfasına aktarabilirsiniz.
VBA bahsettiğim gibi VB6 üzerine kurgulanmıştır ve Olay (Event) temelli kısmen nesne yönelimli bir dildir. Olay nedir derseniz, kullanıcının yaptığı bazı işlemleri, kayıt, dosya açma, hücreye tıklama gibi, takip etmesidir. Bu sayede o olay gerçekleştiğinde, o eylem için yazdığınız kod otomatik olarak çalıştırılır.
Nesne konusuna daha sonra ayrıntılı olarak değineceğim ancak burada kısaca bahsetmek istediğim konu VBA , arkadaş, çocuk, nesne dönüşümü gibi ileri seviye nesne yeteneklerine sahip değildir. Bu kısıtlama günlük görevlerde çok önemli olmasa da bazı durumlarda gerçekten ihtiyaç duyabildiğiniz durumlar olabiliyor. Bunun haricinde VBA’da gösterici denilen değişken türü de oldukça kısıtlı yeteneğe sahiptir. Ancak bu konular normal günlük işlemler için yazacağınız kodlar için çok elzem kısıtlamalar değil.
2. Geliştirici Sekmesi
Bu temel bilgiden sonra isterseniz VBA ekranına nasıl erişebileceğimizden başlayalım. Office kurulduğunda VBA’da varsayılan olarak kurulur. Ancak Microsoft VBA’ya erişmenize imkan sağlayan sekmeyi kapalı olarak getirmeyi tercih etmiş. Bu nedenle öncelikle bu sekmeyi açmalıyız. Bunu da “Dosya” menüsünden “Şeridi Özelleştir” seçeneğini seçiyoruz. Yan tarafta gösterilen ağaçta “Geliştirici” sekmesinin yanındaki kutuyu işaretliyoruz. Tamam düğmesine bastığımızda artık Excel şeridinde Geliştirici sekmesi gelecektir.
Geliştirici sekmesinde bizi ilgilendiren 2 kısım var. Kod ve Kontroller. Diğer alanlara burada değinmeyeceğim. Bu iki kısımdan birincisi bizim VBA altında kod yazmamıza yarayan IDE (Integrated Development Envionment, Birleşik Geliştirme Ortamı) görüntülememize, makro kaydetmemize veya kayıtlı makroları çalıştırmamıza yarayan komutlar yer alıyor.
Kontroller kısmında ise Excel çalışma sayfası üzerine makro ile ilişkilendirebileceğimiz açılır kutu, liste kutusu, metin kutusu gibi kontrolleri yerleştirmemizi, bu kontrollerin özelliklerini ve bunlara bağlı çalışacak makroları ayarlayabiliriz.
Yeri geldikçe buradaki seçeneklere değineceğim. Şimdilik bizim için en önemli olan kısma odaklanalım. Visual Basic düğmesine.
3. Visual Basic Geliştirme Ortamı
Visual Basic yazan düğme geliştirici sekmenisin en solunda en başta yer alıyor. Bu düğmeye bastığımızda aşağıdaki gibi başka bir ekran açılacak. Bu ekran aslında bir IDE (Integrated Development Enviroment-Birleşik Geliştirme Ortamı)
Şimdi bu ekran ilk açıldığında alt kısımda gözüken Immediate ve Watches kısmları gözükmez. Programlama yaptıkça bu iki ekranın değerini daha çok anlayacaksınız. O yüzden görüntülemek çok önemli. Her ikisini de yukarıdaki “View” kısmından açabilirsiniz. Şimdi bu ekranda yer alan tüm pencerelere bir bakalım.
3.a. Proje Gezgini

Bu kısım Proje Gezgini (Project Explorer) olarak adlandırılır. Excel VBA projeleri temelde 4 nesneden oluşur. İlki siz bir VBA ekranı açtığınızda gözüken Microsoft Excel Objects nesnesi. Bu nesne içinde açık olan Excel Çalışma Kitabı ve bu çalışma kitabında yer alan çalışma sayfaları yer alır. Bunlara çift tıkladığınızda o kısma özel kodlar yazabilir ve o kısmın olaylarını programlayabilirsiniz. Misal Çalışma kitabı açıldığında, çalışma sayfası değiştiğinde, bir hücrenin içeriği değiştiğinde çalışmasını istediğiniz kodları bu kısımlara yazarsınız. Bu olaylara yeri geldikçe ayrıntılı olarak değineceğim.
Ek olarak yine bu kısımdan programlarınız esnasında veri girişi sağlamak amacı ile kullanıcı formları, genel program kodlarını yazabileceğiniz modüller ve kendi özel nesnelerinizi programlamanıza yarayan class modülleri ekleyebilirsiniz.
3.b. Projeye Ek Nesneler Ekleme

Proje içinde hali hazırda gelen MS nesneleri haricinde sizin de kendi nesnelerinizi eklemeniz mümkündür. Bunun için buradaki herhangi bir başlığa sağ tıklayıp gelen menüden “Insert” seçeneğini seçmelisiniz. Gördüğünüz üzere 3 tane nesne ekleyebiliyoruz. Bunlardan ilki “User Form”. İstediğiniz gibi bir kullanıcı formu hazırlamaya yarar. Module, genel olarak kod yazabileceğiniz boş bir sayfa açar. Class ise bir nesnedir. Nesneler ile ilgili ayrıntılı bilgi vereceğim ancak kısaca nesneler kendi değişkenlerini ve yordamlarını barındıran bir tür değişkendir.
3.c. Özellikler Penceresi
Projede yer alan her türlü nesnenin özelliklerini görüntüleyerek değiştirebileceğin penceredir. Burada nesneden kastım kendi oluşturduğunuz nesneler veya formlardaki metin kutusu, açılır kutu gibi kontrollerdir. Bunların tanımlı olan isim, renk, font, konum gibi nesneye özel tanımlanmış olan özelliklerini değiştirebilirsiniz. Özellikle kullanıcı formlarını oluştururken sıklıkla kullanacaksınız.
3.d. Hemen Penceresi
Bu pencere ilk başta pek kullanılmıyor gibi gözükse de hayati öneme sahiptir. Buraya yazdığınız kodlar anında çalıştırılır. Arka planda ana kodunuz durdurulmuşken dahi buraya yazdığınız kod parçacığı ondan bağımsız olarak çalışacaktır. Ek bir bilgi daha vermek istiyorum, buraya yazdığınız kodlar satır satır çalıştırılır. Yani programlamadan farklı olarak buraya kod yazdığınızda “Enter” tuşuna bastığınızda yazdığınız kod çalıştırılacaktır. Bu nedenle çok satırlı kodlar yazmanız biraz daha farklı bir mantıkla olmalıdır. Yine buraya yazdığınız kodlarda değişken kullanmanızın da belirli kuralları vardır.
3.e. İzleme Penceresi

Bu pencere bizim en sık kullanacağımız pencerelerden biri. Program yazarken bazen bazı değişkenlerin ne tür değerler aldığını görmek isteyebilirsiniz. Bu gibi durumlarda programa bir program kesmesi eklersiniz. Ardından görmek istediğiniz değişkene de izleme tanımlarsınız. Programı çalıştırdığınızda, program kesme noktasına geldiğinde durur ve siz bu pencerede tanımlamış olduğunuz değişkenin hangi değere sahip olduğunu görebilirsiniz.
3.f. Araç Çubuğu ve Menü

Bir de araç çubuğumuz var. Ekranın en üzerinde yer alan bu araç çubuğunun en önemli kısmı ortada yer alan çalıştır, ara ver ve durdur düğmeleri. Bu düğmeler ile yazmış olduğumuz kodu hata gidermek için çalıştırabiliriz. Hata oluştuğunda durdurabiliriz veya ara verilmiş kodu kaldığı yerden devam ettirebiliriz.
3.f. Durdurma Noktası (Break Point) Ekleme
Bazı durumlarda yazdığımız kodu kontrol etmek için, kodu çalıştırdığımızda bazı noktalarda durmasını isteyebiliriz. Bu durumda kod satırının yanındaki gri alana tıklayarak veya DEBUG menüsünden “Toggle Breakpoint” seçeneğini seçerek o satıra bir durdurma noktası ekleyebiliriz. Bu durumda o satır kırmızı arka plana bürünür ve yanındaki gri akanda içi dolu kırmızı bir daire belirir. Artık kodu çalıştırdığımızda bu satıra gelindiğinde kod işletilmesi durdurulur ve tekrar çalıştır düğmesine basmadan kod işletilmeye devam etmez.
Bu durdurma satırını bir faydası da tanımlamış olduğunuz değişkenlerin o anda hangi değere sahip olduğunu görebilmenizi sağlamasıdır. Bunun için ilgili değişkenin üzerine işaretçi ile gelip biraz beklemeniz gerek.
VBA Editör hakkında anlatacaklarım şimdilik bu kadar. Konularda ilerlerdikçe daha ayrıntılı bilgiler veriyor olacağım.