Program
Excel’de Visual Basic for Applications (VBA), kullanıcıların tekrarlayan görevleri otomatikleştirmesine ve Excel’in standart özelliklerinin çok ötesinde işlevsellik katmasına olanak tanıyan bir dildir. Bu nedenle, ister verimliliğini artırmak isteyen bir başlangıç düzeyi kullanıcı olun, ister karmaşık iş akışlarını basitleştirmeyi hedefleyen ileri düzey bir kullanıcı, VBA işleri kolaylaştırmak için burada.
Bu rehberde temel ve ileri düzey VBA kavramlarını açıklayacağım. Ancak Excel’e yeniyseniz, VBA’ya geçmeden önce sağlam bir temel oluşturmak üzere Excel Fundamentals ile başlamanızı öneririm.
Excel’de VBA nedir?
Visual Basic for Applications (VBA), görevleri otomatikleştirmek ve Microsoft Office uygulamalarının işlevselliğini artırmak için kullanılan bir programlama dilidir. Excel, Word, Access ve diğer Office programlarıyla kullanabilirsiniz; ancak muhtemelen en yaygın kullanım alanı Excel’de özel makrolar oluşturmaktır; buna yakından bakacağız.
Benim VBA’yı ilk kullanışım, her hafta saatler süren bir raporu otomatikleştirmek içindi. Sadece birkaç satır kodla süreci tek tuşla çalıştırır hale getirdim ve ciddi zaman kazandım. O andan itibaren, buna hâkim olmak için biraz zaman ayırmanın verimlilik açısından olağanüstü geri dönüş sağlayacağını anladım.
Önemli VBA Excel Terimleri
VBA ile çalışmadan önce temel terim ve kavramlarını anlamanız gerekir. İşte Excel’de görevleri otomatikleştirmeye ve özel çözümler oluşturmaya başladığınızda sıkça karşılaşacağınız bazı terimlerin listesi.
-
Modüller VBA kodunun, yordamların ve fonksiyonların saklandığı kaplardır.
-
Nesneler VBA’nın yapı taşlarıdır. Çalışma kitapları, çalışma sayfaları ve hücreler gibi öğeleri temsil ederler.
-
Yordamlar belirli görevleri yerine getiren kod bloklarıdır; genellikle alt yordamlar veya fonksiyonlar olarak sınıflandırılır.
-
İfadeler, bir yordam içinde Excel’e (veya Word ya da Access’e) hangi işlemleri yapacağını söyleyen komutlardır.
-
Değişkenler, kodunuz içinde kullanılabilen ve üzerinde işlem yapılabilen verileri saklar.
-
Mantıksal operatörler, değerleri karşılaştırır ve sonuca göre kararlar alır.
And,OrveNotgibi operatörleri içerir.
Excel’de VBA’ya Başlamak
VBA kullanmaya başlamak için VBA düzenleyicisine erişmeniz gerekir. VBA kodunuzu burada yazıp düzenleyeceksiniz. Haydi oraya nasıl gideceğimize bakalım:
Geliştirici sekmesini etkinleştirme
İlk adım, genellikle Şerit üzerinde gizli olan Developer sekmesini etkinleştirmektir. Bunu yapmak için:
- Şerit’in herhangi bir yerine sağ tıklayın.

Excel’de Şerit. Görsel: Yazar.
- Customize the Ribbon... seçeneğini seçin.

Geliştirici sekmesini etkinleştirmek için Şeridi özelleştirin. Görsel: Yazar.
- Bir ileti kutusu açılacaktır. Developer seçeneğini işaretleyin ve OK düğmesine basın.

Developer seçeneğini belirleme. Görsel: Yazar.
Artık Developer sekmesini Şerit’in üstünde görebilirsiniz.

Şeritte Developer sekmesi etkin. Görsel: Yazar.
VBA düzenleyicisini açma
Developer sekmesi etkinleştirildiğinde VBA düzenleyicisine erişebilirsiniz. Bunu yapmak için Developer sekmesine tıklayın ve seçenekler arasından Visual Basic öğesini seçin. Ayrıca klavye kısayolu ALT + F11 ile VBA düzenleyicisini doğrudan açabilirsiniz.

VBA düzenleyicisi. Görsel: Yazar.
VBA arayüzünde gezinti
VBA düzenleyicisi ilk bakışta göz korkutucu görünebilir, ancak kullanımı kolaydır. Birkaç kilit alanını anlayalım:
- Kod Bölmesi, VBA kodunuzu yazıp düzenlediğiniz yerdir.
- Proje Gezgini, çalışma kitabınızdaki projelerin ve modüllerin hiyerarşik görünümünü gösterir.
- Özellikler Penceresi, seçili nesnelerin ayarlarını özelleştirmek için özelliklerini görüntüler.

Excel’de VBA arayüzü. Görsel: Yazar.
Excel’de VBA Kodu Yazma
Artık VBA düzenleyicisine aşina olduğunuza göre kod yazmaya başlayabiliriz. VBA kodu, alt yordamlar ve fonksiyonlar gibi farklı parçalardan oluşur. Bunlar Excel’e ne yapacağını söyleyen komut dizileridir. Daha önce programlama yapmadıysanız endişelenmeyin — adım adım ilerleyeceğim.
Bir VBA alt yordamı yazma
Bir makro yazmadan önce makro ortamını oluşturmanız gerekir. Bunu yapmak için şu adımları izleyin:
- VBA düzenleyicisi içinde Insert > Module seçin. Varsayılan adla yeni bir modül oluşturulacaktır: Module1.

Insert sekmesi altında Module’ü seçin. Görsel: Yazar.
- Modülün adını Özellikler bölmesinde değiştirebilirsiniz.

VBA modülünü yeniden adlandırın. Görsel: Yazar.
Artık bir makro oluşturmak için ortamı nasıl kuracağınızı bildiğinize göre, birlikte bir mesaj görüntüleyen ilk makromuzu oluşturalım. Varsayılan olarak modül oluşturulduğunda kod penceresi açılır. Sizde açılmazsa, oluşturduğunuz modüle sağ tıklayın ve View Code seçeneğine tıklayın. Makrolarınızı yazabileceğiniz kod penceresi açılacaktır.
Burada, Hello, World! mesajını görüntüleyen bir makro oluşturuyorum. Bunu yapmak için kod bölmesine aşağıdaki kodu yazıyorum:
Sub ShowMessage()
MsgBox "Hello, World!"
End Sub
Burada:
-
Sub, belirli bir görevi yerine getiren bir kod bloğu olan alt yordam için anahtar kelimedir. VBA’da alt yordam bir değer döndürmez.
-
ShowMessage, alt yordamın adıdır. VBA adlandırma kurallarına uyduğu sürece (ör. boşluk yok, sayı ile başlayamaz) istediğiniz gibi adlandırabilirsiniz.
-
() burada alt yordamın parametrelerini tanımlamak için kullanılır. Bu görev için parametre gerekmediğinden parantezler boştur.
-
MsgBox, ekranda bir ileti kutusu görüntüleyen yerleşik bir VBA fonksiyonudur.
-
End Sub ifadesi alt yordamın bittiğini belirtir.
SubileEnd Subarasındaki her şey, alt yordam çağrıldığında çalışacak koddur. -
Metin dizeleri VBA’da çift tırnak içine alınır. Burada,
Hello, World!dizesinin ileti kutusunda görünmesini istiyoruz.

Bir makro yazma. Görsel: Yazar.
- Şimdi kodu çalıştırma zamanı. F5 kısayolunu kullanın. Elle yapmak isterseniz Developer sekmesine gidip Macros seçin. Run düğmesine basın.

Developer sekmesi altındaki Macros seçeneğini seçin. Görsel: Yazar.
Artık Excel sayfanızda ileti kutusunun göründüğünü görebilirsiniz.

İleti kutusu. Görsel: Yazar.
VBA’da nesneleri anlama
VBA’da nesneler, Excel içindeki farklı öğeleri kontrol etmenizi ve iş akışlarını daha verimli hale getirmek için görevleri otomatikleştirmenizi sağlar. Üç temel nesne vardır: Workbook, Worksheet ve Range. Her birini pratik bir örnekle anlayalım.
Workbook nesnesi, şu anda açık olan herhangi bir Excel dosyasıdır. Çalışma kitabı içinde yeni sayfalar ekleme veya mevcut sayfaları kaydetme gibi işlemleri yapmamıza olanak tanır. Bu örnekte, mevcut kitaba bir sayfa eklemek ve ardından kaydetmek istiyorum. Başta Sheet1 vardı. Başka bir sayfa eklemek için şu kodu yazıyorum:
Sub AddSheetAndSaveWorkbook()
' Adds a new worksheet to the active workbook
ActiveWorkbook.Sheets.Add
' Saves the workbook
ActiveWorkbook.Save
End Sub
Bu kod önceki kodla aynı şekilde çalışır, ancak burada açıklama satırları ekledim. Açıklamalar ' ile başlar ve kodunuzu etkilemez. Yalnızca kodu daha anlaşılır kılmak için ekleriz.
Artık Sheet2 adlı başka bir sayfanın oluşturulduğunu görebilirsiniz.

VBA ile mevcut sayfaya yeni bir sayfa ekleyip kaydetme. Görsel: Yazar.
Worksheet nesnesi, Excel’de şu anda etkin olan sayfayı temsil eder. Bununla etkin sayfayı değiştirebilir veya üzerinde işlem yapabilirsiniz. Örneğin, etkin sayfanın adını değiştirmek istiyorum. Bunu yapmak için şu kodu giriyorum:
Sub RenameActiveSheet()
' Renames the active sheet to "Sales Report".
ActiveSheet.Name = "Sales Report"
End Sub

VBA ile çalışma sayfasının adını değiştirme. Görsel: Yazar.
Artık Sheet1 adı Sales Report olarak değiştirildi.

Excel çalışma sayfasını VBA ile yeniden adlandırma. Görsel: Yazar.
Range nesnesi, ihtiyacımıza göre işlem yapabileceğimiz belirli bir hücre grubunu veya tek bir hücreyi ifade eder. Aşağıdaki örnekte, F3 ile I3 arasındaki hücre aralığını seçip arka plan rengini değiştiriyorum. Bunu yapmak için şu kodu yazıyorum:
Sub FormatRange()
' Selects the range from A1 to C6
Range("F3:I3"). Select
' Changes the background color of the selected range to Green
Selection.Interior.Color = RGB(101, 255, 143)
End Sub

VBA ile aralık seçip rengini değiştirme. Görsel: Yazar.
Sonuçlardaki farkı görebilirsiniz.

Excel’de VBA ile renk değiştirme. Görsel: Yazar.
VBA’da değişken oluşturma
Diğer programlama dillerinde olduğu gibi, VBA değişkenleri iki ana veri türünü saklar: sayılar ve metin. VBA’da kullanmak için önce tercih ettiğiniz anahtar kelimeyle, ardından değişken adı ve veri türüyle birlikte değişkeni bildirmelisiniz.
Keyword variableName As DataType
Burada:
-
Keyword,Dim,Static,PublicveyaPrivateolabilir. -
variableName, bu değişken için seçilen adı ifade eder (boşluk yok). -
As, değişken türünü bildirmek için kullanılır. -
DataType,Integergibi değişken türünü ifade eder.
Değişkenlerle çalışırken bazı kurallara da uymalısınız:
- Uzunluk 255 karakterden az olmalıdır.
- Karakterler arasında boşluk bulunamaz.
- Ad bir sayı ile başlayamaz.
- Ad içinde nokta kullanmayın.
Sayısal veri türü
VBA’da sayısal veri türleri sayısal değerleri depolamak için kullanılır.
| Veri türü | Depolama | Değer aralığı |
|---|---|---|
| Byte | 1 Bayt | 0 ile 255 arasındaki tamsayıları depolar |
| Integer | 2 Bayt | -32.768 ile 32.767 arasındaki tam sayıları depolar |
| Long | 4 Bayt | -2.147.483.648 ile 2.147.483.647 arasındaki daha büyük tam sayıları depolar |
| Single | 4 Bayt | Tek duyarlıklı ondalık sayıları depolar |
| Double | 8 Bayt | Çift duyarlıklı ondalık sayıları depolar |
| Currency | 8 Bayt | Sabit ondalık basamaklı sayıları depolar |
| Variant (metin) | Metin uzunluğu + 22 bayt | 0 ila 2 milyar karakter |
Sayısal olmayan veri türü
VBA’daki sayısal olmayan veri türleri sayı olmayan değerleri saklar.
| Veri türü | Depolama | Değer aralığı |
|---|---|---|
| String | Dize uzunluğu | Metin depolar |
| Date | 8 Bayt | Tarih ve saati depolar |
| Boolean | 2 Bayt | True veya False değerlerini depolar |
| Variant | 16 Bayt | Herhangi bir veri türünü depolar; türün önceden bilinmediği durumlarda kullanılır |
VBA Excel Makrolarıyla Görevleri Otomatikleştirme
Makrolar, tekrarlayan görevleri yerine getirmek için VBA’da oluşturulan komut dizileridir. Bir makroyla, hücreleri biçimlendirme, verileri kopyalama veya hesaplamalar yapma gibi bir dizi işlemi kaydedebilirsiniz. Makroyu kaydettikten sonra bu işlemleri tek bir tıklamayla yeniden uygulayabiliriz. Bu, özellikle büyük veri kümeleri veya görevlerle çalışırken zaman kazandırır.
Örneğin, raporlarınızı sıklıkla aynı şekilde biçimlendiriyorsanız, her seferinde elle yapmak yerine gerekli tüm biçimlendirme adımlarını uygulayan bir makro kaydedebilirsiniz. Daha sonra bu makroyu yeni verileri biçimlendirmek için çalıştırabilirsiniz. Birkaç temel örnek gösterdik; tek tıklamayla çok daha fazla küçük işlemi yaptığınızı hayal edin. Kodlama deneyiminiz olmasa bile, rutin görevleri otomatikleştirerek iş akışını kolaylaştırabilir ve tekrarlayan işlemleri manuel yaparken ortaya çıkabilecek hataları azaltabilirsiniz.
Excel makrosu kaydetme
Bazı biçimlendirme değişikliklerini yapmak için bir makroyu nasıl kaydedebileceğinizi görelim:
- Developer sekmesine gidin > Record Macro düğmesine tıklayın.
- Bir ileti kutusu açılacaktır. Benim yaptığım gibi makronuza bir ad verin: FormatCells.
- İsterseniz bir klavye kısayolu atayın. Ben Ctrl+S atadım.
- Kayda başlamak için OK düğmesine tıklayın.
Makro kaydı başladıktan sonra otomatikleştirmek istediğiniz işlemleri yapın. Bu örnekte basit bir tabloya bazı biçimlendirme değişikliklerini kaydediyorum. Tamamladığınızda tekrar Developer sekmesine gidip Stop Recording düğmesine tıklayın. Aşağıda makronun çalışmasını görebilirsiniz.
Excel’de VBA kullanarak makro kaydetme. Gif: Yazar.
Şimdi, başka bir sayfada başka bir veri kümeniz varsa ve aynı biçimlendirmeyi orada da istiyorsanız, tümünü yeniden biçimlendirmek yerine oluşturduğunuz kısayol tuşuna basın (benim durumumda Ctrl+S). Aksi halde manuel yapmak için sheet2 > Developer sekmesi > Macros > Run yolunu izleyin.

Excel makrosunu kullanma. Gif: Yazar.
Excel makrolarını düzenleme
Bir makro kaydettikten sonra, eylemlerini ince ayar yapabilir veya özelleştirebilirsiniz. İşte nasıl:
- Developer sekmesine gidin ve Visual Basicse tıklayın.
- VBA düzenleyicisi açılacaktır. Şimdi Proje Gezgini içinde, makronuzun kaydedildiği çalışma kitabını bulun.
- Modules klasörünü genişletin ve makronuzu içeren modüle çift tıklayın. Kod penceresi, kaydedilmiş makronuzun VBA kodunu gösterecektir.

Excel’de kaydedilen makronun kodu. Görsel: Yazar.
Her bir kod satırı, kayıt sırasında yaptığınız eylemi gösterir. Buradan, kaydedilen kodu tercihlerinize göre özelleştirmek için değiştirebilirsiniz. Benim durumumda, kalın biçimlendirmeyi kaldırmak için Selection.Font.Bold değerini False olarak ayarladım. Düzenlemeleri tamamladıktan sonra kaydet düğmesine tıklayarak veya Ctrl+S tuşlarına basarak değişiklikleri kaydedin ve değişiklikleri uygulamak için Run ile kodu çalıştırın. 
Excel VBA makrosunu özelleştirme. Görsel: Yazar.
Makronuzu çalıştırdıktan sonra sonuçları görebilirsiniz — daha önce kalın olan sütunlar artık kalın değil.

Excel’de makro kullanma. Görsel: Yazar
Özel Excel makroları yazma
Bazı gelişmiş görevlerde makro kaydedemeyebilirsiniz. Bu gibi durumlarda makroyu sıfırdan yazmanız gerekir. Örneğin, verileri bir çalışma sayfasından diğerine kopyalamak istiyorum. Özel bir makroyu şöyle yazıyorum:
- İlk sayfada VBA düzenleyicisini elle açın veya Alt+F11 tuşlarına basın.
- Yeni bir modül ekleyin.
- Kod bölmesine aşağıdaki kodu yazın.
Sub CopyData()
Sheets("Sheet1").Range("B1:E21").Copy Destination:=Sheets("Sheet2").Range("B1")
End Sub
- Makroyu kaydedin ve Run ile çalıştırın.
Artık Sheet1’deki verilerin Sheet2’ye kopyalandığını görebilirsiniz.

VBA kullanarak özel makro yazma. Gif: Yazar.
Son Düşünceler
Tekrarlayan görevleri otomatikleştirmekten karmaşık makrolar oluşturmaya kadar VBA, Excel içinde bir olasılıklar dünyasının kapısını açar. Temellere alıştıkça kod yazma pratiği yapın ve kademeli olarak VBA’nın daha gelişmiş özelliklerini keşfedin. Unutmayın, VBA’da — ya da herhangi bir programlama dilinde — ustalaşmanın anahtarı tutarlı pratik ve denemeye açıklıktır. Becerilerinizi daha da geliştirmek için şu ek kaynakları inceleyebilirsiniz. Data Analysis in Excel ve Learn Excel kursları, Excel’in özellikleri hakkında daha fazla bilgi edinmek için mükemmeldir.
VBA’nın ötesinde kodlama bilginizi genişletmek istiyorsanız, 2024’te Nasıl Programcı Olunur rehberi bir yol haritası sunar. Bu alana ilgi duyuyorsanız mutlaka göz atın. Ayrıca Financial Modeling in Excel kursu, ayrıntılı finansal modeller oluşturmakla ilgilenenler için idealdir.
Karmaşık konuları basitleştirmeyi seven bir içerik stratejistiyim. Splunk, Hackernoon ve Tiiny Host gibi şirketlerin hedef kitleleri için ilgi çekici ve bilgilendirici içerikler üretmelerine yardımcı oldum.
Sık Sorulan VBA Excel Soruları
VBA’da Explicit ifadesinin amacı nedir?
Explicit ifadeleri, tüm değişkenlerin kullanımdan önce açıkça tanımlanmasını sağlayarak hataları azaltmaya ve kodunuzu daha sürdürülebilir kılmaya yardımcı olur.
VBA kodumu nasıl şifreyle korurum?
VBA kodunuzu şu yol ile koruyabilirsiniz: VBA editor > Tools > VBAProject Properties > Protection sekmesi. Lock project for viewing seçeneğini işaretleyip bir parola belirleyin.
VBA’da ActiveWorkbook ile ThisWorkbook arasındaki fark nedir?
ActiveWorkbook, odakta olan çalışma kitabını ifade eder ve bu kitap VBA kodunu içermek zorunda değil. Thisworkbook ise hangi çalışma kitabı etkin olursa olsun, VBA kodunun bulunduğu çalışma kitabını ifade eder.
VBA’da UserForm nedir ve nasıl kullanılır?
UserForms, VBA’da kullanıcının veri girişi yapmasını sağlayan özel ileti kutularıdır. Veri girişi, seçim veya özel bir arayüz gerektiren kullanıcı etkileşimi için etkileşimli formlar oluşturmakta kullanılabilirler.
