Makrolara Giriş
Evinde veya işyerinde bilgisayarı olup da, bilgisayarında Excel programı olmayan hemen hemen yok gibidir. Hepimiz Excel’in meşhur hücrelerine bazı sayıları mutlaka hapsetmişizdir. Kimimiz, toplanması gereken sayıları alt alta yazıp, Toplama Sihirbazına basarak bir hamlede sonucu almanın zevkini yaşarken, kimimiz de şirkete ait bir tabloyu, hücrelerin sihrini kullanarak hazırlamaya çalışmışızdır. Excel ile tanışma süresi biraz daha ileri düzey olanlarımız ise, hazırlamış olduğu veri tablosunun, birkaç tıklamayla müthiş grafiğini çıkartmanın zevkini herkesle paylaşmıştır. Diğer bir kısım kullanıcılar ise artık Excel’i konuşturmaya başladıkları inancıyla, hücrelere formüller girerek programlar yapmanın müthiş kolaylıklarını çevresindekilere aktarmaktan kendilerini alamamışlardır. Bunların hepside güzel şeyler.

Evet, Excel bir çok programın haricinde herkesin bilgisayarında olan ve hemen hemen herkesin kullandığı bir program. Excel’i kullanan kime sorarsanız “çok iyi Excel kullanıyorum” diyecektir. Eh, bunu söylemekte de pek haksız sayılmaz. Çünkü memleketimizde Excel hakkında ulaşılabilecek Türkçe kaynak olarak anlatılan en ileri düzey, Excel Çalışma sayfalarına ait olan İşlevler (Fonksiyonlar) dir. Kendinize ait bir program yapmak istediğinizde fonksiyonlar ve formüllerden başka bir yol önerilmemiştir. Bazı kaynaklarda bir iki sayfa, “Makro” diye bir kavramdan bahsedilmiştir.

Bu yazı dizisinde de Excel hakkındaki kaynakların benzerine bir yenisini katmak istemiyorum. Diğer kaynaklardan daha farklı olarak işin arka planına çomak sokmak nasıl olur, onu gündeme getireceğim. Evet, sizin de tam tahmin ettiğiniz gibi bir çok kullanıcının asla cesaret edemediği MAKRO komutunun ne olduğunu teferruatıyla anlatacağım. O halde sizi fazla bekletmeden ve sözü çok daha uzatmadan Makro nedir? Sorusuna cevap aramaya çalışalım.

Bilmediğiniz bir mekanda dolaştığınızı düşünün ve önünüze esrarengiz bir kapı çıkıyor. Bu kapının arkasında neler var bilmiyorsunuz. İçgüdüsel olarak elinizi kapının kulpuna atıp, aşağı doğru bastırmak ve açmak istiyorsunuz. Bu arada, bir çok kişinin de, aynı kapının çevresinde beklediğini görüyorsunuz. Kapıyı açıp içeri girmeden bu insanlardan bir kaçına kapının ardında ne olduğunu soruyorsunuz. Sorduklarınız size omuz silkerek “Ben açtım baktım, ama hiçbir şey anlamadım, tanımadığım bir çok farklı şey mevcut. Oradaki sistem bu taraftan farklı. Pek bir şey anlaşılmıyor. Benim gibi bir çok arkadaş sadece kafamızı içeri uzatarak baktık ve geri çekilip o kapıyı kapattık. Ama birkaç kişi içeri girdi. Hala daha da çıkmadı. Başlarına bir şey gelmiş olabilir, bilemiyoruz. Dönmelerini bekliyoruz. Bence sen de, hiç içeri girme. Akıbetinin ne olacağını bilmediğin işlere hiç bulaşma” diyerek içinize biraz korku, biraz endişe ve biraz da korku salıyor.

Şimdi kendinizi şu an kapı tokmağına tutmuş ve Excel’in arka kapısını aralayıp içeri girmek isteyen, farklı çalışan bir Excel ortamında bulmak istiyorsanız, bu sayfalarda anlatacaklarımızı takip etmeye devam edin. Evet, her ne kadar sistem farklı olsa da, bu farklılık size bir çok kolaylığı birlikte getirecektir. “Peki nedir Makro ? Hadi artık anlat şunu” diye içerinizden geçiriyorsanız, aşağıdaki paragrafı dikkatlice okuyunuz.

Makro, paket programların bazılarının içerisinde bulunan, kullanıcıya kolaylık olması açısından, sürekli tekrar edilen (rutin) işlemlerin otomatik hale getirilmesi için kullanılan bir komut/komutlar dizisidir.

Arabanız ile evinizin önüne geldiniz ve arabanızı garaja park etmek istiyorsunuz. Yapmanız gereken işleri aşağıda sıraladım.

Vitesi boşa alacak ve el frenini çekeceksiniz. Tabi kontağı kapatıp kapatmamak sizin sürücülüğünüze bağlı.

Arabanın kapısını açacaksınız.
Arabadan aşağı ineceksiniz.
Garaj kapısına doğru yürüyeceksiniz.
Garaj kapısını bir şekilde açacaksınız.
Tekrar arabanıza doğru geri yürüyeceksiniz.
Arabanıza bineceksiniz.
Kapıyı tekrar kapatacaksınız.
Arabayı vitese sokacak ve arabanın harekete geçmesini sağlayacak diğer işlemleri yapacaksınız.
Arabayı garaja sokacaksınız.
Kontağı kapatıp ineceksiniz.
Garaj kapısına doğru tekrar ilerleyeceksiniz.
Garaj kapısını kapatacaksınız.

İnanın ben yazarken belki de siz de okurken sıkıldınız. Bir de arada unutmuş olduğum işlemleri düşünün. Tabi sizin aklınıza hemen. “Ne gerek var bu kadar işleme artık garaj kapıları otomatik, elinizdeki kumandayla oturduğunuz yerden açın ve kapatın” diyorsunuz. Tamam işte ben de size bunu anlatmaya çalışıyorum. İşte, aralamak istemediğiniz kapının ardındaki karmaşık zannedilen sistem, bu kadar zor ve zahmetli işlemlerin yerine tek bir kumanda düğmesi ile işlerinizi hallediyor.


Yukarıda verdiğim örnekteki işlemleri artırabilirsiniz. Seçenek sizin. Ya bu işlemleri tek tek yaparsınız, yada sürekli yapmak zorunda olduğunuz bu işlemler için önce oturup bir cihaz hazırlarsınız (yada satın alırsınız) ve bu işlemleri tek bir düğmeye tıklamayla halledersiniz.

Bundan sonraki satırlar, kapıyı aralayıp içeri giren ve bir daha dışarı çıkmak istemeyen kişiler için.

Şimdi Excel’in arka kapısından içeri girmek için hazırlanın ve sihirli tuşlara basın. ALT + F11 (aynı işlemi Araçlar>Makrolar>Visual Basic Düzenleyicisi komutlarına tıklayarak da gerçekleştirebilirsiniz.)  Karşınıza Şekil-1’e benzer bir ekran gelecektir.


Şekil-1


İlk bakışta makroların ne olduğunu bilmeyen ve hayatında hiçbir programlama dili görmemiş olanlar için farklı bir pencere. Biz buna VBA penceresi diyoruz. Pencerenin açıklama kısmına geçmeden evvel VBA’nın ne demek olduğunu açıklayalım. VBA’nın açılımı, Visual Basic For Applications (Visual Basic İçin Uygulamalar)’dir. Visual Basic programlama dilini hepimiz duymuşuzdur. İşte bu dilin Excel’e uyarlanması yada bir başka programa uyarlanarak bize kod yazma imkanı sağlamasına VBA diyoruz. VBA, Excel’de hücre mantığını esas alırken, Word’de satır mantığını esas almaktadır. Buradan hareketle şu çıkartımı yapabilirsiniz. Excel’de Kullanılan VBA yani makro dili ile Word’de kullanılan VBA temelde aynı. Fakat Bu iki programın çalışma mantığı  ve işlevi farklı olduğu için kodlama yaparken yürütülecek uygulama komutları farklı. Temel de aynı derken şunu kastediyorum. Visual Basic programlama dilinde kullanılan For...Next döngüsünün çalışma yapısı aynıdır. Fakat bu döngü bloğu içerisinde kullanılacak kodlar farklıdır. Excel’de hücreleri referans alıp kod yazarken, Word’de satırları referans alarak kod yazmanız gerekir. Aşağıdaki örneği incelediğinizde ne demek istediğimizi daha iyi kavramış olacaksınız.

Örnek:
Amacımız Excel’de veya Word’de alt alta 4 kere isim yazdırmak olsun.

Excel için aşağıdaki makroyu yazıp çalıştırdığınızda aldığınız sonuç Şekil-2’de gösterilmiştir.

Sub isimyazdir()
    For i = 1 To 4
        ActiveSheet.Cells(i, 1).Value = "M. Temel Korkmaz"
    Next i
End Sub


Şekil-2


Aynı işlemi Word için yaptırmak istediğinizde, aşağıdakine benzer bir makro yazarsanız, Şekil-3’deki sonuçla karşılaşırsınız.

Sub isimyazdir()
    For i = 1 To 4
        ActiveDocument.Content.InsertAfter ("M. Temel Korkmaz")
        ActiveDocument.Content.InsertParagraphAfter
    Next i
End Sub


Şekil-3

İki makroda da

For i= 1 To 4
 .......
 .......
Next i

döngüsünü görüyoruz. Temel komut sistemi olarak aynı olduğunu daha önce belirtmiştim. Şimdi ikisi arasındaki farka kısaca göz atalım.

Excel’de çalışma alanı “Sheet” olarak belirlenirken, Word’de “Document” olarak belirlenmiştir.

Excel’de çalışılacak birim Cells (Hücreler)  olarak belirlenirken,  aynı işlem Word’de Paragraph (Paragraf, Satır) olarak belirlenmiştir.

Kısaca tekrarlamak gerekirse, VBA kodlama programlarda da temel yapı aynı olmakla birlikte, uygulama alanı olarak farklı moda sahip oldukları için kullanım ve kod yazım mantığında farklılaşma vardır.

Şimdi konumuza geri dönelim. Kod penceresinde 3 ana bölüm bulunmaktadır. Bunları sırasıyla Project (Proje) Penceresi, Properties (Özellikler) Penceresi ve Kod Penceresi olarak adlandırabiliriz. Şekil-1’e dikkat ettiğinizde koyu bir alan göreceksiniz. İşte bu alan aslında Kod penceresine ait alandır. VBA penceresinde herhangi bir Modül sayfası açmadığımız için bu bölümde kod penceresi görüntülenmemiştir.

Project Penceresi: Bu pencere, tasarım penceresidir. Kodlarınız arasında dolaşmanızı ve yeni kodlar yazdığınızda neyi nereye yazacağınızı belirleyen penceredir. Şimdi bu pencereyi inceleyelim.


Şekil-4


VBAProject (Kitap1): Sizin de hemen anladığınız gibi Kitap1, çalışma kitabımızın adı. Hazırlayacağımız makro, Kitap1 çalışma kitabında olacak. Eğer çalışma kitabının adını değiştirirseniz parantez içinde bulunan bu isimin de değiştiğini göreceksiniz. Başta bulunan VBAProject ifadesi ise, üzerinde çalışacağımız tasarımın adını belirtir. Bu ifadenin daha sonra hazırlayacağımız diğer projelerle karışmaması için yeni bir tasarım olarak değiştirelim. Tools menüsünden VBAProject Properties...(Şekil-5) komutunu seçin. Şekil-6’daki  pencere ile karşılaşacaksınız.


Şekil-5


Şekil-6


Şekil-6 daki pencerede Project Name kutusunda bulunan adı değiştirin. Biz “MTKnınTasarımı” olarak değiştirdik. Şimdi Project Penceresine bir daha bakacak olursanız, VBAProject yazan bölgede “MTKnınTasarımı” yazdığını göreceksiniz.

Microsoft Excel Objects: Microsoft Excel Nesneleri. Bu klasörün altında 3 adet çalışma sayfası ve bir adet çalışma kitabı ismi ve ikonu bulunmaktadır. Şu an çalıştığımız Kitap1 isimli çalışma kitabında bulunduğumuzdan çalışma kitabının ismi  ThisWorkbook (Bu Çalışma Kitabı) olarak belirlendi. Diğer çalışma sayfaları da kendi isimleriyle bulunmaktadır. Varsayılan olarak 3 adet çalışma sayfası olduğundan üç tane sayfa ismi görünmektedir.

Excel Çalışma kitabına dönün, sayfa sayısını bir arttırın ve adlarını değiştirin. VBA sayfasına geri döndüğünüzde sayfa sayılarının 4 adet olduğunu ve isimlerinin de değiştiğini göreceksiniz.



Şimdi, Project penceresinin argümanlarını arttıralım. Insert menüsüne tıklayın (Şekil-7). Açılan menüden aktif olan UserForm, Module ve Class Module komutlarına birer kere tıklayın. Şekil-8 deki Project penceresini tekrar kontrol edin.


Şekil-7


Şekil-8

MTKnınTasarımı altındaki başlıkların, daha doğrusu klasörlerin sayısının arttığını göreceksiniz. Forms (Formlar), Modules (Modüller) ve Class Modules (Sınıf Modülleri) olarak üç klasör eklendi. Dikkatli olan kullanıcılarımız, şunun mutlaka farkına varmışlardır. Insert menüsündeki üç komuta tıkladığınızda Project penceresinin sağındaki boş pencerede değişiklikler meydana geldi. Çünkü her komutu tıkladığınızda Excel size o klasörle ilgili yeni, boş bir form ya da sayfa açtı. Şu anda bu sayfalardan her ne kadar 1 tanesi açık gibi görünüyorsa da diğerleri de açık halde ve öndeki sayfanın altında sizden kod yazmanız için hazır olarak beklemektedir. Şekil-8 deki görüntüde açık olan üç sayfayı da fark edebilirsiniz.

Properties Penceresi: Adından da anlaşıldığı gibi, Properties penceresi seçmiş olduğunuz herhangi bir nesne  hakkındaki özellikleri listeleyen bir penceredir. Eğer bu pencere şu anda sizin ekranınızda görünmüyorsa “View” menüsünden “Properties Window” komutunu tıklayın ya da klavyenizden F4 tuşuna basın.


Şekil-9

Şekil-9 da görüldüğü gibi Properties penceresinde 1 adet ComboBox (Açılan liste kutusu),  2 adet sayfa sekmesi bulunmaktadır. ComboBox, o anda VBA sayfanızda bulunan, diğer bir deyimle Project pencerenizde bulunan nesnelerin listesini verir.

Kod Penceresi: Üzerinde bütün işlemleri yapacağımız pencere budur. Bilgileriniz burada doküman haline gelecek ve uzaktan kumanda cihazınızı burada oluşturacaksınız.

Üniversite yıllarımızda Basic Programlama dilini öğrenmek için bir kitapçıdan “Basic” adlı bir kitap almıştım. Kitabın bir bölümünde şu yazıyordu. “Bilgisayar hızlı çalışır, fakat aptaldır.” Bunu ilk zamanlar tam kavrayamamıştım. Ne zaman ki bilgisayarda  kod yazmaya başladım, işte o zaman bilgisayarın hiçbir şey bilmediğini müşahede ettim. Ben ne yazarsam ancak o kadarını yapabiliyordu.

Şimdi sıra sizde. Kod sayfasına aşağıdaki makro kodunu yazın ve Excel’de ilk makronuzu oluşturun.

Sub ilkmakrom()
    Range("C10").Select
End Sub

Makroyu çalıştırma yöntemlerini siz kendiniz zamanla öğreneceksiniz. Ben size en uzun olan yolu göstereceğim. Siz en pratiğini bulun. “Run” menüsünden “Run Sub/UserForm” komutunu tıklayın ve Excel sayfanıza dönün. Seçili olan yani aktif olan hücrenin “C10” olduğunu göreceksiniz.

                                                                                                                  M. Temel   KORKMAZ