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 |