Excel’de önceki yazımızda sizlere program kodu yazmadan Excel-VBA’yı nasıl kullanacağınızı anlattım. Bu bölümde sizlere subrutinlerden bahsedeceğim. Okurken çok sıkıcı diyeceksiniz eminim, ancak bu yollardan geçmeniz gerekiyor. Sabredin kodlamaya gireceğiz çok yakında.
Ama öncelikle geliştirici olmak için, Excel’in sıradan kullanıcılara gizlediği geliştirici sekmesini açın. Excel Seçenekleri à Şeridi Özelleştir sekmesi à Sağ tarafta Şeridi özelleştirin açılır listesinde “Ana Sekmeler” seçiliyken aşağıdaki listede Giriş, Ekle, Sayfa Düzeni, Formüller, … , Görünüm, Geliştirici…
Evet aradığımız o, listedeki Geliştirici yazısının solundaki çentiği işaretliyorsunuz. Tamam diyip kapatın. Üstte menülere baktığınızda Geliştirici menüsü görünecek. Bulamadıysanız Alt+C tuşuna basarsanız Geliştirici menüsünü seçecektir. Eğer bip sesi geliyor ekranda değişiklik olmuyorsa Geliştirici menüsü hala gizlidir. Baştan başlayıp tekrar deneyin.
Önceki yazımızı okuduysanız hatırlarsınız makro kaydettiğimizde bir ”Makro adı” belirlemiştik. İşte Excel bizim yerimize bu isimle bir “subrutin” oluşturdu. Eğer önceki yazımızı okumadıysanız mutlaka okuyun ve yapmadıysanız siz de yazdırma gibi basit bir makro kaydı yapın. Uygulayarak öğrenmek daima daha akılda kalıcı olacaktır.
Kodlama mantığını kavrayabilmeniz için önce makrolarda deneme yapacağız. Geliştirici sekmesinde dikkatinizi eminim ilk olarak Visual Basic(VB) butonu dikkatinizi çekmiştir. Ancak VB içerisinde kodlarınızı bulamayabilirsiniz. O yüzden Makrolar butonuna basarak devam ediyoruz. Yine de kurcalamak isterseniz çekinmeden VB’ye girip Project-VBA Project penceresindeki Module1 yazısını bulup tıklayarak makro kodlarınıza ulaşabilirsiniz.
Makro penceresinde ise önceden oluşturduğunuz makro ismi çıkacaktır, makro adını seçip, sağ taraftaki Düzenle butonuna basıyoruz. Karşımıza bir kod görselindeki gibi bir subrutin çıkıyor.
Hemen kısa bir teori…
Nedir bu subrutin? Kısaca Sublar (Bknz: Kod görseli), geriye herhangi bir değer döndürmeden işlem yapan kod bloklarıdır. Sonucunu merak etmediğiniz işleri bu subrutin bloğu ile bir arada tutarsınız ve kodlamadaki sıraya göre işlem yaparlar. “Sub Makro_Adı()” ile başlar, “End Sub” ile biter.
Yeri gelmişken size teorik bir bilgi…
Bu Visual Basic programlama dili, İngilizce yazı diline yakın kelimeler tercih edilerek tasarlanmıştır. Mesela makro kaydı yaparak oluşturduğum bu subrutin, İngilizce bilenlerin de anlayacağı gibi, önce “Dilekçe” adlı sayfayı seçiyor, sonra aktif sayfadaki formülleri hesaplatıyor, daha sonra da 2 kopya olacak şekilde aktif penceredeki seçili sayfayı yazdırıyor. “End Sub” komutuna gelince de subrutin komutları bittiğinden kendisini çağıran işleme geri dönmektedir. Subrutin olduğu için de, geriye herhangi bir tekmil vermiyor. Dilekçemiz yazdırılmış yazdırılmamış, subrutinin umrunda değil gördüğünüz üzere. J
Hatta ben kodu kaydederken yazdırılacak bir şey bulamadım diyerek hata vermişti. O derece gamsız bu subrutin. Ama yok eğer bir fatura/dilekçe yazdırıyorsanız, yazdırma başarılı olduğunda sıra numaranızı arttıracaksanız, o zaman devreye subrutinlerin ruh ikizi; fonksiyonlar girer. Onları da ileride anlatacağız.
Konuyu kapatmadan önce subrutin işleyişine bir de derleyici gözüyle bakalım.
Subrutinimizde yanıp sönen klavye imleci, “Sub Yazdir()” ile “End Sub” arasındaki herhangi bir
satırdayken F8 tuşuna bastığınızda “Sub Yazdir()” satırının solunda sarı bir ok olduğunu ve satırın sarardığını göreceksiniz. İşte subrutindeki programlar, tam olarak oradan başlıyor. Ve sarı olan satır işlenecek ilk komuttur. Bir kez daha F8’e bastığınızda tek tırnak(‘) ile başlayan açıklama satırlarını atlayıp ilk kod satırına ulaştığını göreceksiniz. Eğer işlenen komut görsel bir işlem ise excel sayfasını açarak, nereleri değiştirdiğini takip edebilirsiniz. Bu F8 tuşunu unutmayın, yazdığınız
kodu adım adım kontrol etmeniz gerekirken çok işinize yarayacak. Visual Basic’te Hata Ayıklama F8 ile başlar. Unutmadan, hata ayıklamadan çıkıp kodun işleyişine devam etmesi için de F5’e basmalısınız. Makro penceresi görünürse kapatabilirsiniz.
Ve dipçe: Açıklama satırları; içinde kod bulunsa dahi işletilmezler. Kodların üstüne altına sağına, subrutinlerin dışına, 2 subrutin arasına herhangi bir yere tek tırnak(‘) ile başlayarak yazabilirsiniz. Sadece kodların soluna açıklama yazamazsınız.
Ve son söz… Subrutinler geriye değer döndürmez dedim, ancak buraya bir ünlem koyuyorum.
Yeri geldiğinde subrutinlerden de değer alacağız. Ancak şimdilik sayıların 1’den başladığına inanın, elbet 0’ı da anlatacağız. 😉
Merakta kalın, takipte kalın… J