VBA|Seviye|Başlangıç
1. Geliştirici Sekmesinin Menüye Eklenmesi
Bir Excel dosyası açın ve aşağıdaki resimde 1 no.lu alanda gösterildiği gibi şeridin boş bir yerinde sağ tıklayıp 2 no.lu alanda yer alan “Şeridi Özelleştir” seçeneğini tıklayın.

Aşağıdaki gibi bir pencere açılacaktır. Açılan pencerede 1 no.lu alanda “Ana Sekmeler” seçeneğinin işaretli olduğuna emin olun ve 2 no.lu alanda gösterilen “Geliştiriciler” seçeneğini işaretleyip 3 no.lu alanda yer alan “Tamam” butonuna tıklayın.

Excel menüsünde aşağıdaki resimde 1 no.lu alanda gösterildiği gibi “Geliştirici” sekmesi eklenecektir. “Geliştirici Sekmesi” daima en sağda konumlanmayabilir. Bu yüzden en sağda “Geliştirici Sekmesi”ni göremiyorsanız “Giriş”, “Ekle”, “Sayfa Düzeni” gibi sekmelerin yanında herhangi yerde de konumlanmış olabilir. Visual Basic editörüne erişmek için aşağıdaki resimde gösterildiği gibi 2 no.lu alanda yer alan “Visual Basic” yazan ikona tıklayın.

Aşağıdaki resimde 1 no.lu alanda “Sayfa1(Sayfa1)” isimli öge bir worksheet ögesidir. Diğer bir ifadeyle Excel dosyasında yer alan “Sayfa1” isimli sayfadır.

“Sayfa1(Sayfa1)” isimli ögeye çift tıklayın. Aşağıdaki gibi boş bir pencere açılacaktır. Bu pencere “Sayfa1(Sayfa1)” isimli ögeye aittir. Takip eden bölümlerde detaylı bir şekilde açıklanacağı gibi VBA ile programlama yapılırken kodlar worksheet, userform, module, button, combobox gibi ögelerin içine yuvalandırılır. Bu örnekte “Sayfa1(Sayfa1)” isimli ögeden devam edilecektir. Örnek olarak aşağıdaki gibi boş bir prosedür tanımlayalım.
Sub Test () End Sub
Çalışmasını istediğimiz kodlar “Sub” ifadesi ile “End Sub” ifadesi arasında yer almalıdır.

Aşağıdaki resimde basit bir örnek olarak aşağıdaki kodlar yazılmıştır.
Sub Test () MsgBox “Merhaba!” End Sub
Bu kodu çalıştırabilmek için imleç kesinlikle “Sub Test()” ile “End Sub” arasında bir yerde bulunmalıdır. İmleç “Sub Test()” ile “End Sub” arasında iken 2 no.lu alanda belirtilen ikona tıklanarak yazılan kod çalıştırılır.

Kodun çalıştırılması sonrasında arka planda “Sayfa1” otomatik olarak aktif olur ve ön planda ise “Merhaba!” yazılı bir mesaj kutusu görüntülenir. Mesaj kutusunu kapatmak için “Tamam” butonuna tıklayabilirsiniz.

2. Dosyanın VBA Projesi (“.xlsm” Uzantılı) Olarak Kaydedilmesi
Bir önceki konuda, VBA ile programlama yaparken sıklıkla kullanılan “Geliştirici Sekmesi”nin Excel menüsüne eklenmesi ve basit bir VBA kodu ile “Merhaba!” yazan bir mesaj kutusunun görüntülenmesini gördük. Çalışmamızı (.xlsx uzantılı) basit bir Excel dosyasında yaptık. Ancak söz konusu dosyayı (VBA projesi olarak) kaydetmek istediğimizde aşağıdaki resimde gösterildiği bir uyarı görüntülenir. Dosyayı VBA projesi olarak kaydetmek için “Hayır” butonunu tıklayın.

Dosyanın kaydedileceği konumu seçmeniz istenecektir. Örnek olarak, aşağıdaki resimde dosyanın masaüstüne kaydedileceği varsayılmıştır. Ancak aşağıdaki resimde işaretlenen açılır listeden dosyanın kaydedilme biçiminin değiştirilmesi gerekir.

Söz konusu işaretlenen açılır listeden “Makro İçerebilen Excel Çalışma Kitabı” seçilerek “Kaydet” butonuna tıklanır.

Büyük olasılıkla aşağıdaki resimde gösterildiği gibi bir uyarı mesajı görüntülenecektir. Bu mesaja “Tamam” diyerek mesajı kapatabilirsiniz.

VBA projesi olarak kaydedilen Excel dosyasının üzerinde, normal bir Excel dosyasından farklı olarak aşağıdaki resimde işaretlendiği gibi bir ünlem işareti görüntülenir.

3. Belge Denetçisine İlişkin Mesajın Görüntülenmesinin Engellenmesi
Bir VBA dosyasını her kaydettiğinizde “Dikkat! Belgenizin bazı bölümleri belge denetçisi tarafından kaldırılamayan kişisel bilgiler içeriyor olabilir.” veya “Be careful! Parts of your document may contain personal information that cannot be removed by the Document Inspector.” şeklinde aşağıdaki gibi bir uyarı alırsınız.

Belge denetçisine ilişkin yukarıdaki uyarı VBA projenizde çalışırken kodların kendilerinden beklenen görevleri yerine getirmesi sırasında çeşitli aksaklıkları yol açabilir. Söz konusu uyarı mesajını kaldırmak için VBA projenizi açın ve aşağıdaki adımları izleyin.
Dosya ==> Seçenekler ==> Güven Merkezi ==> Güven Merkezi Ayarları ==> Gizlilik Seçenekleri yolunu izleyin. Açılan pencereden “Kaydederken dosya özelliklerinden kişisel bilgileri kaldır” isimli ögede yer alan işareti kaldırıp “Tamam” butonuna tıklayın. Artık VBA projenizi/dosyanızı her kaydettiğinizde, belge denetçisine ilişkin yukarıdaki uyarı mesajı görüntülenmeyecektir. Görseller aşağıda yer almaktadır.




4. ActiveX ve Makro Ayarları
ActiveX ve makro ayarları VBA projenizde çalışırken sıklıkla başvuracağınız araçlardan biri olmamakla birlikte, çalışmanız sırasında sürekli olarak bazı kodların çalışmasına manuel olarak izin vermeniz gerekebileceği gibi çeşitli sebeplerden dolayı bu ayarları optimize etmek isteyebilirsiniz. Ancak bu ayarlarda herhangi bir optimizasyon yapmasanız da VBA projeniz büyük olasılıkla sorunsuz olarak çalışacaktır. Bu ayarlarda değişiklik yapmak için aşağıdaki adımları izleyin.
Dosya ==> Seçenekler ==> Güven Merkezi ==> Güven Merkezi Ayarları yolunu izleyin.
ActiveX Ayarları bölümünden “Tüm denetimleri kısıtlama olmadan ve sormadan etkinleştir” seçeneğini işaretleyin ve “Güvenli Mod” seçeneğinde bulunan işareti kaldırıp “Tamam” butonuna tıklayın.
Makro Ayarları bölümünden ise “Tüm makroları etkinleştir” seçeneğini işaretleyin ve “VBA projesi nesne modeli erişimine güven” seçeneğini işaretleyip “Tamam” butonuna tıklayın. Dilediğiniz zaman bu ayarlarda tekrar değişiklik yapabilirsiniz.
Konuya ilişkin görseller aşağıda yer almaktadır.


5. Properties Window Ögesinin Eklenmesi
Properties Window, VBA ile programlama yaparken sıklıkla kullanılacak araçlardan biridir. Properties Window aracı yardımıyla ögelerin bazı davranışları kod yazmadan kolaylıkla belirlenebilir. Aşağıdaki resimde Properties Window, Sayfa1(Sayfa1) ögesinin özelliklerini göstermektedir.

Eğer BuÇalışmaKitabı (ThisWorkbook) ögesine çift tıklanırsa da Properties Window aracı, BuÇalışmaKitabı (ThisWorkbook) ögesinin özelliklerini görüntüler. Herhangi bir nedenle bu aracı aşağıdaki resimde gösterildiği gibi görüntüleyemiyorsanız Visual Basic editöründe yer alan View ==> Properties Window yolunu izleyerek tekrar görünür yapabilirsiniz.


6. Project Explorer Ögesinin Eklenmesi
Project Explorer, Properties Window gibi VBA ile programlama yaparken sıklıkla kullanılacak araçlardan bir diğeridir. Project Explorer aracı yardımıyla ögeler (userform, worksheet, module vb.) arasında kolaylıkla gezinebilirsiniz.

Herhangi bir nedenle bu aracı aşağıdaki resimde gösterildiği gibi görüntüleyemiyorsanız Visual Basic editöründe yer alan View ==> Project Explorer yolunu izleyerek tekrar görünür yapabilirsiniz.


7. Tasarım Modu-Design Mode
Örnek VBA projemizde “Geliştirici” sekmesini ve ardından “Tasarım Modu”nu (Design Mode) tıklayın.

Sonra da “Tasarım Modu” ikonunun hemen solundaki “Ekle” ikonuna ve sonra da “ActiveX Denetimleri” bölümünden “Komut Düğmesi (ActiveX Denetimi)” isimli kontrole tıklayın.

Fare sayfa üzerinde iken farenin sol tarafına basılı tutarak küçük bir dikdörtgen çizin. Böylece bir buton oluşturmuş oldunuz.

Şimdi de butonun üzerine çift tıklayın. Tasarım modunda (Design Mode) olduğunuz için doğrudan Visual Basic editörüne yönlendirileceksiniz.

CommandButton1 ile End Sub arasına aşağıdaki kodu ekleyelim.
MsgBox "Bu ilk butonum."
Şimdi de VBA projemizde “Geliştirici” sekmesini ve ardından “Tasarım Modu”nu (Design Mode) tıklayın ve tasarım modundan çıkın. Tasarım moduna geçmek ve tasarım modundan çıkmak için Visual Basic editöründe bulunan “Design Mode” isimli butonu da kullanabilirsiniz.

Sayfaya eklediğimiz butona bir kez tıkladığınızda “CommandButton1” prosedürü tetiklenecek CommandButton1 ögesinin içinde kodladığımız “Bu ilk butonum.” yazılı mesaj kutusu görüntülenecektir.

Tekrar design mode açın/etkinleştirin ve sayfada yer alan butona tekrar bir kez tıklayın. Prosedür çalışmayacaktır. Çünkü design mode aktifken prosedür başlatılmaz. Design mode etkinken butona çift tıklarsanız, doğrudan Visual Basic editöründe yer alan butonun prosedürüne yönlendirilirsiniz.


8. Yorum Satırı-Comment
Derleyici bir prosedürü derlerken Sub ile End Sub arasında yer alan satırları yukarıdan aşağıya doğru okur. CommandButton1 butonuna aşağıdaki gibi arda arda iki satır kod yazalım.
Private Sub CommandButton1_Click() MsgBox "Bu birinci mesaj." MsgBox "Bu ikinci mesaj." End Sub
Design Mode kapatıldıktan sonra sayfada yer alan CommandButton1 butonuna tıklayın. Aşağıdaki resimde gösterildiği gibi önce “Bu birinci mesaj.” içerikli mesaj kutusu görüntülenir. Bu mesaj kutusunu kapattıktan/Tamam dedikten sonra “Bu ikinci mesaj.” içerikli mesaj kutusu görüntülenir.

Design Mode/Tasarım Modunu tekrar etkinleştirin ve CommandButton1 üzerine çift tıklayıp prosedüre gidin. MsgBox “Bu birinci mesaj.” yazan satırın başına/soluna tek tırnak “ ’ ” işareti eklerseniz, söz konusu satır rengi yeşil olur.

Yeşil renkli satırı, yani başında “ ‘ ” işareti bulunan satırı derleyici okumayacaktır. Bunun anlamı derleyici, söz konusu satırı kod olarak algılamayacak ve o satırla ilgili herhangi bir işlem yapmayacaktır. Bir satırı yeşil renkli yapmak o satırı “comment/yorum satırı” haline getirmek anlamına gelir. Design Mode kapatılır ve CommandButton1 butonuna tıklanırsa, “Bu birinci mesaj.” içerikli mesaj kutusu görüntülenmez; sadece yorum satırından sonraki satıra(lara) ilişkin kodlar çalışır.
9. Edit Aracının Araç Çubuğuna Eklenmesi-Comment Block
Aşağıdaki gibi 5 satırdan oluşan temsili bir prosedürümüz olsun.
Private Sub CommandButton1_Click() MsgBox "Bu birinci mesaj." MsgBox "Bu ikinci mesaj." MsgBox "Bu üçüncü mesaj." MsgBox "Bu dördüncü mesaj." MsgBox "Bu beşinci mesaj." End Sub
Sadece “Bu beşinci mesaj.” içerikli mesaj kutusuna ilişkin satırın çalışmasını, diğerlerinin yorum satırı olmasını istediğimizi varsayalım. Bu durumda ilk 4 satırı kapatmak (yorum satırı haline getirmek) için tek tek soluna “ ‘ “ işareti ekleyeceğiz. Onlarca ya da yüzlerce satırı yorum satırı haline getirmek isteseydik ne olacaktı?
Visual Basic editöründe iken aşağıdaki adımları takip edin.
View ==> Toolbars ==> Edit
Görseli aşağıdadır.

Aşağıdaki resimde 1 no.lu alandaki gibi bir araç çubuğu görünür olacaktır. Bunu 2 no.lu alana, yani Toolbar üzerine sürükleyip bırakırsak Edit araç çubuğunu Toollbar’a sabitlemiş oluruz.

Aşağıdaki resimde gösterildiği gibi yorum satırı haline getirmek istediğimiz satırları seçeriz ve sonra da 2 no.lu alanda gösterilen fare ile üzerine gelindiğinde Comment Block açıklaması yazan ikona tıklarız.

Böylece bir defada birden çok satırı yorum satırı haline getirmiş, derleyicinin bu satırları kod olarak okumasını engellemiş oluruz.

Birden çok yorum satırını kod haline getirmek için ilgili satırları seçin ve “Comment Block” ikonunun hemen sağında yer alan ve fare ile üzerine gelindiğinde “Uncomment Block” açıklaması yazan ikona tıklayın.
İshak Kutlu, VBA Notları

İshak bey öncelikle emeğinize teşekkür ederim. Derslerinizi offline çalışmak için kaydettiğimizde resimler kaydedilmiyor. Bir çözümü var mı?
Teşekkürler. Kaydetmek istediğiniz web sayfası açıkken, klavyeden CTRL+S tuşlarına birlikte basın. Açılan pencereden “Web Sayfası, Tamamı” seçeneğini tıklayıp kaydedin. Bu şekilde resimleri de görüntüleyebilirsiniz. Alternatif olarak web sayfası açıkken, klavyeden CTRL+P tuşlarına birlikte basın. Açılan pencereden PDF olarak kaydet seçeneğini tıklayın. Bunlardan biri sorunu çözecektir.
Öncelikle cevabınız için teşekkür ederim. Kaydı iki türlü kaydetmeyi denememe rağmen her ikisinde de resimleri linkleriyle kaydediyor. Resimler yerel olarak kaydedilmediğinden internete ihtiyaç duyuluyor. Web sayfasında içerikle ilgili yerel olarak kaydettiği 2 adet resim var onlarda çok düşük çözünürlükte. Bilginize. (“38-multi-comments-300×161.png.webp” ve “39-multi-comments-300×160.jpg.webp”). (İkinci mesajı ilk mesajda web sitesi hata verdiği için yazmıştım.)
Geri bildiriminiz için teşekkürler.
Web sayfasını resimlerle birlikte tamamen kaydedebilmek için şu iki tarayıcı eklentisinden birini deneyebilirsiniz:
SingleFile: Web sayfasını tek bir HTML dosyası olarak lokale kaydeder, tüm resimler içine gömülür.
GoFullPage: Sayfanın tam ekran görüntüsünü alarak PDF veya PNG formatında kaydeder.
Bu yöntemleri denedim ve sorunsuz çalışıyor. Google Chrome, Edge veya Firefox tarayıcınıza bu eklentileri ekleyerek kolayca kullanabilirsiniz.
Denediğinizde sonucu paylaşabilirsiniz!
HTML ve PDF formatlarında kesinlikle resimleri dosyaya gömmüyor. PNG ile çalışmak zor. Ne yapalım bilgi olsun da internet zorunlu olsun. İlginize teşekkür ederim.
Maalesef resimler html ve pdf dosyalarına gömülmüyor.
Rica ederim. Kolaylıklar dilerim.
İshak bey önce emeğiniz için teşekkür ediyorum. Örnek olarak VBA derslerinizi offline kaydedip sonra çalışmak istediğimde resimleri kaydetmiyor online olmak gerekiyor. Bunun bir çözümü var mı?
İshak Bey
Makrolara giriş yapabilmek için böyle bir anlatıma ihtiyacım vardı ve sitenizi bulduğuma çok memnunum. Teşekkürler, ellerinize sağlık.
Rica ederim. İçerikleri yararlı bulmanıza sevindim.