|
|
|
 |
|
|
 |
 |
Excel Makroları'na Giriş - M. Temel Korkmaz - 01.07.2001 |
|
|
|
|
 |
Merhaba,
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.
Bir sonraki sayıda Makro kodlarını yazmaya başlayacağız.
Şimdi sizi aşağıdaki kodu yazmak ve çalıştırmakla baş başa bırakıyorum. Her ay bu koddan bir tane
vereceğim. Burada vereceğim kodun o ay anlattığım konuyla hiçbir alakası olmayabilir.
| |
|
|
 |
|
|
|