İŞLEM TABLOSU PROGRAMLAMA - Ünite 3: VBA Penceresi ile Çalışma Özeti :

PAYLAŞ:

Ünite 3: VBA Penceresi ile Çalışma

Giriş

İşlem tablosu programlarından olan Microsoft Office grubu içerisindeki Microsoft Excel (MS Excel), yazılım içerisinde birçok farklı hesaplama ve fonksiyonun hazırlanmış şablonları ile desteğini sunmaktadır.

VBA, programlama aracılığıyla yapılacak işlemlerin, otomatik olarak MS Excel tarafından yapılmasını sağlar. Bu programlama ortamı, VBE (Visual Basic Editor – Visual Basic Metin Düzenleyicisi) adı verilen bir pencere tarafından sağlanır ve otomatik olarak yapılması gereken işlemler VBE ortamında VB dili kullanılarak kodlanır. VB Metin Düzenleyici özelliğine sahip olmak için, öncelikle MS Excel üzerinde Geliştirici sekmesi açılmalı, bu sekme ile ortaya çıkan özelliklerden yardım alınmalıdır. Bir anlamda, makro kullanımı olarak da adlandırılabilecek VBA özellikleri ile tekrarlı işlemlerin otomasyona geçirilmesinde büyük kolaylık sağlanmış olur. Her ne kadar işlemleri kolaylaştırsa da, kodlama penceresi ile işlem tablosu programının içerisine belirli işleri yapan kod parçacıkları ilave edileceği için, bir güvenlik açığı da oluşur. Kötü niyetli yazılımlar, bu biçimdeki kodların arasına saklanarak çalıştırıldığı bilgisayarı ve yazılımlarını tahrip edebilirler. Bu sebeple VBA kullanımından önce işletim sisteminin ve üzerinde bulunan uygulama yazılımlarının güncel bir anti virüs programı ile korunuyor olduğundan emin olunmalıdır. VBA yardımıyla yaratılan özellikler, dosya geri dönüşüm kutusuna gönderildiğinde tahrip olmaktadır. Bu sebeple çalışılan dosyanın dikkatli biçimde korunması, ancak işi tamamen bittikten sonra silinmek amacıyla geri dönüşüm kutusuna gönderilmesi gereklidir.

Geliştirici Sekmesi

Geliştirici sekmesi, makroları yaratabilmek ve programlama ortamına geçiş yapabilmek için MS Excel ile birlikte gelen özelliklerden birisidir. İlk kurulumda varsayılan olarak görüntülenmeyen “GELİŞTİRİCİ” sekmesinin görünür hâle gelmesi ve üzerinde yerleşik bulunan butonlar yardımıyla çeşitli programlama özelliklerine sahip olmak için öncelikle bir dizi işlem yapmak gereklidir. Boş bir sayfa ile açılan MS Excel programında, varsayılan sekmeler olarak, Resim 3.1’de de görüleceği gibi DOSYA, GİRİŞ, EKLE, SAYFA DÜZENİ, FORMÜLLER, VERİ, GÖZDEN GEÇİR ve GÖRÜNÜM sekmeleri görüntülenir (S:52, Resim 3.1).

Geliştirici sekmesini devreye sokmak için, DOSYA sekmesine gelinmeli ve Seçenekler tıklanmalıdır. Seçenekler tıklandığında, Excel Seçenekleri adı altında bir menü açılır. Bu menüden Şeridi Özelleştir seçildiğinde, üst tarafta bulunan sekmelerin tamamının görüntülendiği, devreye alınmamış sekmelerin ise işaretli olmadığı görünür. Geliştirici sekmesi işaretli olmayan ögelerden biridir (S: 53, Resim 3.2). Geliştirici sekmesinin sol kısmındaki (+) işareti tıklandığında alt menüleri görünür hâle gelir. Bu menüler Kod, Eklentiler, Denetimler, XML ve Değiştir’dir. Geliştirici sekmesinin başlığındaki kutu işaretlenerek Tamam seçildiğinde, sekme ve alt başlıkları MS Excel menü çubuğunda görünür ve kullanılabilir hâle gelir. Geliştirici sekmesini verimli kullanmak için öncelikle alt başlıklarında bulunan butonların çalıştırdığı eklentiler hakkında bilgi sahibi olmak gereklidir.

Kod menüsünün butonları, Visual Basic, Makrolar, Makro Kaydet, Göreli Başvuruları Kullan ve Makro güvenliğidir. Makrolar butonu, üzerinde çalışılan MS Excel sayfası için daha önce oluşturulmuş makroları görüntülemeyi sağlar. Açılan bir sayfa ile kayıtlı makrolar adları ile listelenir.

Sağ tarafta bulunan butonlarla, kayıtlı makrolar üzerinde gerekli işlemler yapılır. Çalıştır butonu seçili makronun baştan sona çalışmasını, Adımla butonu seçili makro işlemlerinin adım adım yapılmasını, Düzenle butonu makronun düzenlenmesini ve gerekli değişikliklerin yapılmasını, Oluştur butonu yeni bir makro oluşturmayı, Sil butonu seçili olan makronun silinmesini sağlar. Seçenekler butonu tıklandığında açılan Makro Seçenekleri penceresi ile seçili makronun klavye kısayolu belirlenebilir ya da değiştirilebilir. Açıklama bölümüne makro ile ilgili gerekli açıklamalar yazılabilir (S: 53, Resim 3.4).

Makro Kaydet butonu, makro oluşturmak ve yapılacak işlemleri tanımlamak için yardımcı görevi görür. Açılan pencere yardımıyla Makro Adı, Makroyu devreye sokmak için kullanılacak klavye kısayol tuş takımı, makronun saklanacağı dizin ve makro ile ilgili açıklamanın kaydedebileceği bir alan sağlar. Makro kaydet penceresinde gerekli bilgiler doldurulduktan sonra, makro kaydedilmeye başlanır. Bu sırada gerçekleştirilen tüm işlemler, MS Excel tarafından kayıt altına alınır. Makro Kaydet butonu, kayıt esnasında yerini Kaydı Durdur butonuna bırakır. İşlemleri tamamlayıp kayıt durdurulduğunda ise makro belirlenen Makro Adı ile tekrar çağrılmaya hazırdır. Sayfada bulunan her şeyi temizleyerek kaydedilen makroyu, Makro butonundan adı ile seçerek işleme sokulduğunda, kayıt ederken yapılan işlemlerin tamamının yeniden gerçekleştirildiği görülecektir.

Makro, tekrar çalıştırıldığında yalnızca kaydedildiği hücre blokları üzerinde çalıştığı görülecektir. Bir başka deyişle, makro vasıtasıyla otomatikleştirilen işlemlerin parametrik olarak istenen hücre blokları üstünde çalıştırılması yerine sabit hücre blokları üzerinde işlem yaptığı gözlenir. Bu durumu örnekle açıklamak için, A1 adresli hücreden başlayarak, A9 adresli hücreye kadar 1’den 9’a sıralı sayıları yazan bir işlemi otomatikleştiren bir makro olsun. Makro, sadece A1-A9 hücre aralığında geçerli olacaktır. Tekrar çalıştırıldığında, bu hücreler başka sayılar ile dolu olsa bile üzerine yeni sayılar yazma işlemi yapılacak ve eğer ilk sayılar 1’den 9’a kadar sıralı sayılarsa, makro hiç çalışmıyormuş gibi görüntülenecektir. Yapılan işlemin daha sonra başka hücre bloklarında da çalışmasını sağlamak için Göreli Başvuruları Kullan butonu yardımcı olur.

Makro kullanımındaki güvenlik açıklarına daha önce değinilmiştir. Virüslerden en çok etkilenen kod parçacıkları olan makroların güvenlik ayarlarını değiştirmek için, Makro Güvenliği butonundan yararlanılır. Bu buton tıklandığında Güven Merkezi penceresi açılarak Makro Ayarlarına erişim sağlanır (S:55, Resim 3.5).

Eklentiler menüsünün iki alt başlığı Eklentiler ve COM Eklentileridir.

Çoğu eklenti üç farklı tür altında kategorilere ayrılabilir (1):

  • Excel eklentileri
  • Karşıdan yüklenebilir eklentiler
  • Özel eklentiler

Eklentiler butonu tıklandığında çıkan eklentiler penceresinde, MS Excel sürümüne bağlı olarak, en iyileştirme ve denklem çözümüne yardımcı araç olan Çözücü Eklentisi, istatistiksel ve mühendislik amaçlı çözümler için veri çözümleme araçları sağlayan Çözümleme Araç Takımı, çözümleme araç takımının VBA destekli araçlarını barındıran Çözümleme Araç Takımı, VBA ve Avro para birimi dönüştürme ve biçimlendirme araçlarını sağlayan Euro Para Birimi Araçları eklentilerini devreye almayı ve devreden çıkartmayı sağlayan seçim ekranları bulunur. Bunların dışında bilgisayarda yüklü uygulamalara bağlı olarak farklı eklentiler de bu pencere yardımıyla devreye sokulabilir. Pencerede bulunan otomasyon butonu ile farklı ortamlarla otomasyon sağlanabilir.

COM Eklentileri penceresi ise Inquire, Microsoft Office PowerPivot for Excel 2013 ve Power View gibi farklı uygulama yazılımları ile birlikte çalışma imkânı sağlar. COM Eklentileri penceresi ile farklı eklentiler sisteme dâhil edilebileceği gibi, gerekli olmayan eklentiler de kaldırılabilir. Eklentiler penceresinde olduğu gibi COM Eklentileri penceresinde de kullanıma açılmak istenen eklentinin kutusunun işaretlenmesi yeterlidir.

Denetimler menüsü MS Visual Basic programlama ortamının MS Excel ortamında kullanıma sunulacak olan nesnelerinden oluşur. Ekle penceresi ile Form ve Active X nesnelerini kitap üzerine ekleme imkânı vardır. Form ve Active X nesneleri kullanıcı ile Makro arasında etkileşimli bir ortam sağlar. Bu nesnelerden bazıları, Buton, Grup Kutusu, Onay Kutusu, Liste, Açılan Liste, Değer Değiştirme Düğmesi, Metin Kutusu gibi nesnelerdir. Eklenen nesneye göre kodlama yapılarak aracın kullanımı sağlanır. Ekle menüsünün alt ögeleri S: 56, Resim 3.6’da görünmektedir.

MS Visual Basic, nesneye dayalı bir programlama ortamıdır. Bir başka deyişle, program kodlarının devreye girmesi için nesne-eylem ikilisinin bir araya gelmesi gereklidir. Nesneye eylem uygulandığı zaman devreye girecek olan kodlar, Visual Basic Metin Düzenleyicisi üzerine yazılacaktır. Kod Görüntüle menüsüyle bu kodları görüntülemek ve gerektiğinde değişiklik yapmak mümkündür. İletişim Kutusunu Çalıştır menüsü, daha eski sürüm MS Excel ile çalışırken kullanılan menülerden birisidir. İletişim kutularının yerini yeni sürümlerde kullanıcı formları almıştır.

XML (Extensible Markup Language - Genişletilebilir İşaretleme Dili), verilerin yapılarını bilinen biçimlere dönüştürerek, diğer uygulamalar ile uyumlu veriler oluşturmak için kullanılır. MS Excel sayfasında bulunan verilerin bilinen biçimlere uygun olarak işaretlenmesi ile XLM biçimine sahip XML dosyaları oluşturulur. XML biçimine dönüştürülmüş veriler, farklı uygulama yazılımları tarafından rahatlıkla kullanılabilirler.

Değiştir menüsünün tek sekmesi, Belge Bölmesi sekmesidir. Tıklandığında açılan pencere ile özel şablonlar belirlenebilir (URL, UNC, URN vb.) ve belge bilgileri bölmesinin ayarları değiştirilebilir. S: 57, Resim 3.7 bu pencereyi göstermektedir. İstenildiğinde, belge açılırken veya ilk kez kaydedilirken her zaman Belge Bilgileri Bölmesinin gösterilmesi için alt tarafta bulunan bir işaretleme kutusunun seçilmesi gerekir.

VBA Çalışma Temelleri

Geliştirici sekmesini devreye soktuktan sonra, Makro yaratmak ve tekrar kullanmak özellikle tekrarlı işlemleri gerçekleştirmeyi kolaylaştırmaktadır. Daha uzman sistemler kurmak, işlemleri aynı zamanda nesnelerle gerçekleştirmek için ise VBA geliştirme ortamından faydalanılır. VBA ile yaratılan otomasyon sistemlerinin genel adı makrodur. Ancak makrolar ile belirli işlemleri kaydetmek ve kaydı durdurarak işlemi tekrar etmekten daha detaylı işlemler gerçekleştirilebilir.

MS Visual Basic, Basic (Beginners-All Purpose Symbolic Instruction Code - Yeni Başlayanlar için Çok Amaçlı Sembolik Talimat Kodu) anlamına gelen programlama dilinin, Microsoft firması tarafından görsel bir ortama taşınmasıyla geliştirilmiş bir programlama dilidir. Kolay bir dil olan Visual Basic, aynı zamanda MS Windows işletim sistemleri ile de uyumludur. Görsel, olaylara ve nesnelere dayanan bir programlama dilidir. Görsel programlama, ortamda bulunan nesneler aracılığıyla etkileşimli programlamayı amaçlamaktadır. MS Visual Basic mantığına göre aynı zamanda yazılan program kodlarının devreye girebilmesi için belirtilen nesneye, eylem uygulanmalıdır. Nesne-Eylem ikilisi olmadığı sürece yazılan program kodları çalışmayacaktır. Örnek vermek gerekirse, sayfa üzerine yüklenecek bir Buton nesnesi için en sık kullanılan eylem, tıklanmasıdır. Hem makro oluştururken hem de kod sayfası ile gerçekleştirilmek istenen eylemler dizisi, butonun tıklanması sonucunda devreye girer.

Çalışma kitabı içerisinde birden fazla MS Excel sayfası bulunmaktadır. Gerektiğinde sayfa ekleme işlemleri ile sayfa sayısı da arttırılabilir. VBA kullanımından önce, uygulama kodunun tek bir sayfa için mi, yoksa içindeki tüm sayfalarla beraber kitabı mı kapsayacağına karar vermek gereklidir. Her iki ortam için de ayrı ayrı kod yazmak ve farklı işlevleri gerçekleştirmek mümkündür. Bazı durumlarda, MS Excel kitabı içerisinde birden fazla sayfa ve her bir sayfanın kendine özgü işlemleri olabilir. Böyle durumlarda her bir sayfa için ayrı ayrı ve bir tane de kitabın tamamı için kod yazma imkânı bulunur. Gelişmiş bir otomasyon gerçekleştirmek istenen durumlarda bu sıkça karşılaşılan bir kodlama yöntemidir (S: 58, Resim 3.8).

VBA proje penceresinde görüntülenen “Bu Çalışma Kitabı”, kitabın tamamı, her bir sayfa ise kendilerine ait kısımlar için kod penceresini açacaktır. Beş ögenin tümü, MS Visual Basic programında bulunan Form yapısı gibi birer nesnedir. VBA pencerelerini tek tek incelemeden önce programlama ortamının çalıştırılması hakkında bilgi vermek gereklidir. Pencere ilk açıldığında karşılaşılan kısım Tasarım Zamanı (Design Time) olarak adlandırılır. Tasarım zamanında nesneler ve onlara uygulanan eylemlere göre gerekli kodlar yazılır. VBA ortamında yazılan kodlar da Makro olarak kaydedilmektedir. Bir makroyu çalıştırmak için, Obje olarak adlandırılan MS Excel sayfasına dönerek makroyu çalıştırmak yeterlidir. Projeye VBA ortamında sayfalar dışında, işlemlerin gerekliliğine göre farklı ögeler de eklenebilir.

VBA ortamının hata vermemesi, her zaman programın hatasız olduğu anlamına gelmemektedir. Mantıksal hatalarda ortam, herhangi bir hata göstermezken programın çalışması esnasında istenilen işlemler gerçekleşmeyecek, hatta çoğu zaman hatalı işlemler gerçekleşecektir. Mantıksal hataların düzeltilmesi, yazım hataları ya da nesnesel hataların düzeltilmesi kadar kolay değildir. Yapılmak istenen işlemlerin tamamı tekrar gözden geçirilmeli, eğer gerekiyorsa programın algoritması değiştirilmeli ve kod tekrar yazılmalıdır.

VBA Penceresi Özellikleri

VBA ortamını oluşturan ve her birinin kendine özgü görevleri olan pencereleri kısaca tanımak önemlidir. MS Excel programında, Geliştirici sekmesinden Visual Basic tıklanarak açılan VBA ortamı, farklı pencerelerden ve menülerden oluşmaktadır. Basit etkileşimli makrolar yaratmak için kullanılacak pencere ve menüler, Proje Penceresi (Project Window), Özellikler Penceresi (Properties Window), Araç Çubuğu (Toolbox), Nesne Tarayıcısı (Object Browser) gibi pencereler ve Görünüm (View), Ekle (Insert), Çalıştır (Run) gibi menülerdir. Kod (Code) penceresi ise Proje Penceresinde yer alan tüm nesneler için ayrı ayrı kodlar yazmayı sağlayan pencereler bütünüdür (S:59, Resim 3.9).

Proje Penceresi bir anlamda projenin tüm ögeleri için tarayıcı gibi çalışacaktır. Her bir nesnenin üzerinde sağ tıklayarak, o nesneye ait kod ya da obje kodun görüntülenmesi sağlanır. Farklı nesneler eklenmiş proje penceresi S:60, Resim 3.10’da görülmektedir. Çalışma kitabı ve sayfalar ana öge oldukları için Proje penceresi ile silinmelerine olanak yoktur. Çalışma kitabı silinirse proje gerçekleşmez. Fakat sayfaları eklemek ve silmek istersek, MS Excel penceresinden bu işlem gerçekleştirilebilir. MS Excel penceresinde yapılan güncelleme VBA Proje penceresini de güncelleyecektir. Bu ögelerin dışında proje penceresinde sağ tıklanma ile Kullanıcı Formları (User Forms), Modüller (Module) ve Sınıflar (Class) oluşturulabilir ve Sil (Remove) işlemi ile projeden silinebilirler.

Özellikler penceresinin üst kısmında bulunan açılan menü sayesinde projede bulunan ana nesneye gelindiğinde ona bağlı bulunan tüm nesneler görüntülenir ve seçilebilir. S:60, Resim 3.11’de açılan menü sayesinde Kullanıcı Formu (User Form) üzerinde yerleşik bulunan Buton (Command Button), Çoklu Sayfa (Multipage) ve Etiket (Label) nesneleri görüntülenmektedir. Özellikler penceresinde ise seçili bulunan kullanıcı formunun özellikleri görüntülenmektedir. Özellikler penceresinde dikkat edilmesi gereken bir önemli kısım da her özelliğin kendine ait değerlerinin olmasıdır. Bir nesnenin en önemli özelliği (Name) olarak gösterilen İsim özelliğidir. Bu özelliğe göre nesnelere gerekli kodlar yazılacağı için kod yazarak değiştirmenin mümkün olmadığı tek özelliktir.

Yazı tipi (Font) değişkeni, seçimli değer alan özelliklerdendir. Özellikler penceresinden değiştirirken bu değerleri belirlemek daha kolayken, kod penceresinde değişiklik yapmak için özelliğe uygun doğru değer girilmelidir. Özelliği kod ile değiştirmek için;

Nesne İsmi . Özellik İsmi = Özelliğin Yeni Değeri

formülünden faydalanılır.

Araç çubuğu, sadece projeye bir kullanıcı formu eklendiğinde açılan bir penceredir. Bu pencereyi, MS Excel ana ekranında kullandığımız Geliştirici sekmesinin Denetim Menüsü, Ekle butonuna benzetmek mümkündür. Hatırlanacak olursa, ekle butonu tıklandığı zaman, MS Excel’de aktif bulunan sayfa üzerine nesneler eklenebilir. Aynı şekilde, projede bir kullanıcı formu tanımlandığında aktif hâle gelen Araç Çubuğu da form üzerine eklenecek nesneleri barındırmaktadır. Kontroller (Controls) olarak adlandırılan nesnelere gerektiği durumlarda yenilerini eklemek de mümkündür. Nesnelerin altında bulunan boş alana sağ tıklayarak Ek Kontroller (Additional Controls) seçilerek açılan pencere sayesinde istenilen nesnenin görüntülenmesi ya da görünümden çıkarılması sağlanabilmektedir. Kullanıcı formu üzerine eklenen nesne veya nesneler, kendi özellikleri ile birlikte gelmektedirler. Nesnenin adı ve 1’den başlayarak sayısı İsim özelliğine atanır. Kullanıcı isterse bu özelliği tasarım zamanında değiştirebilir.

Nesne tarayıcı, kod yazımı esnasında kullanıcının en büyük dostudur. Nesnelerle yapılabilecek eylemlerin listelendiği nesne tarayıcıda aynı zamanda nesne özellikleri ve bileşenleri de hiyerarşik bir şekilde yer alır. Gerçekleştirilmek istenen eyleme göre arama imkânı da veren nesne tarayıcı, sınıflar ve o sınıfa ait üyelerin yer aldığı iki kısımdan oluşan bir pencerede sunulur. Arama yapmayı sağlayan menü yapısı sayesinde istenilen özelliğe ulaşmak kolaylaşır.

MS Excel ve diğer ofis programlarında olduğu gibi, yukarıdaki menüler, program ayarlarını yapmak ve gerekli olan program eklerini aktif hâle getirmek için kullanılır. VBA ortamında da birçok menü bulunmaktadır. Bu menülerden bir kaçı, bu ünitede ele alınacaktır. Görünüm menüsünün ilk iki alt başlığı, Kod (Code) ve Obje (Object)’dir. Kod, nesneye ait kodlamanın yapılacağı, gerekli değişken atamaları ve prosedürlerin oluşturulacağı VBE (Visual Basic Editor)’ye ulaşmayı sağlayan menü ögesidir. Boş bir sayfa olarak açılan Kod sayfasının kullanımı izleyen bölümde anlatılmaktadır. Bir diğer önemli öge olan Obje ise nesneyi yani sayfaları, kullanıcı formlarını ya da bu nesnelerin üzerine yerleştirdiğimiz diğer nesneleri (Buton, Liste, Etiket vb.) görüntülemeyi sağlayan bölümdür. Hem Kod, hem de Obje kısımları tasarım zamanında çalışmaktadır.

Tüm Microsoft ürünlerinde Ekle menüsü, üzerinde çalışılan uygulama sayfasına farklı nesneler eklemek için kullanılır. MS Word ile yazılan bir dosyaya resim eklenmesi.

Tasarım Zamanı gerekli nesnelerin oluşturulduğu ve nesnelere eylemler uygulanınca yapılması gerekenlerin tanımlandığı kodların yazıldığı zamandır. Bu zamanda program oluşturulur ve otomasyon sağlanır. Programın çalışması içinse Çalışma Zamanına geçmek gereklidir. Bu zaman içerisinde nesneye eylem uygulanarak yazılan kodların belirlenen işlemleri gerçekleştirmesi sağlanır. Tasarım zamanında yapılan tüm işlemler, çalışma zamanında geçerlilik kazanır. İstendiğinde Ekle menüsünün kullanımı buna örnektir.

Kod Penceresi, VBE (Visual Basic Editor - Visual Basic Metin Düzenleyicisi) adı da verilen bir pencerenin açılmasını sağlar. Bu pencere ile nesne-eylem ikilisinin çalışma zamanında gerçekleştireceği işlemler tanımlanır. Kod penceresinde gerekli kodları oluşturmak için VBA programlama dili hakkında bilgi sahibi olmak gereklidir.

Private Sub (Alt Yordama Özel) yazılacak olun kodun başlığını, End Sub (Alt Yordamı Sonlandır) ise sonlandığı kısmını göstermektedir. Private Sub ikilisinin yanında nesnenin ismi olan CommandButton1 ve eylemi olan Click görüntülenmektedir. Kod olarak yazılacak her şey, Private Sub ve End Sub satırlarının arasındaki satırlara yazılacaktır. Örneğe devam edilecek olursa, çalışma zamanına geçildiğinde, buton tıklandığı zaman, formun arka plan rengi kırmızı olsun. Bunun için gerekli kod hatırlanacak olursa,

Nesne İsmi . Özellik İsmi = Özelliğin Yeni Değeri

formülüne uygun şekilde yazılmalıdır. Bu örnekte rengi değiştirilmek istenen nesne ismi UserForm1, değiştirilmek istenen özellik ise Arkaplan Rengi (Backcolor) olarak belirlenebilir. Özelliğe atanacak yeni değer ise kırmızı renginin renk kodunu temsil eden vbRed olmalıdır.

Yukarıdaki formüle göre Private Sub / End Sub arasına yazılması gereken kod:

User Form1 . Backcolor = vbRed

olmalıdır. Kod yazılıp çalışma zamanına geçildiğinde program kullanıma hazırdır.