Excelde VBA Programlama Visual Basic Application Emine TUNEL

  • Slides: 29
Download presentation
Excel’de VBA Programlama (Visual Basic Application) Emine TUNÇEL Kırklareli Üniversitesi, Pınarhisar Meslek Yüksekokulu

Excel’de VBA Programlama (Visual Basic Application) Emine TUNÇEL Kırklareli Üniversitesi, Pınarhisar Meslek Yüksekokulu

Excel Giriş • Sayısal verilerin çözümlenmesi ve görüntülenmesi konularında uzman bir elektronik tablo (hesap

Excel Giriş • Sayısal verilerin çözümlenmesi ve görüntülenmesi konularında uzman bir elektronik tablo (hesap tablosu) programıdır. • Sayısal verileri ve metin verilerini saklayabilir, mevcut verilerde çeşitli hesaplamalar gerçekleştirebilir ve bu verileri temel alarak grafikler oluşturabilir. • Excel dosyası her biri 65. 536 satır ve 256 sütün olarak düzenlenmiş pek çok sayfadan oluşmuş defter olarak düşünülebilir. • • • Her satır ve sütunun kesişiminde bir hücre (cell) bulunur. Bir hücre sayı, metin ya da bir formül içerebilir. Ayrıca Excel gelişmiş grafik özelliklerine sahiptir. Verileri göstermek üzere pek çok grafik tipi sunmaktadır.

Excel’de Programlama • Nesne yönelimli programlama (OOP) tekniği, gerçek dünyadaki somut nesnelerin bir yazılımın

Excel’de Programlama • Nesne yönelimli programlama (OOP) tekniği, gerçek dünyadaki somut nesnelerin bir yazılımın sunduğu soyut modelde birer karşılığı olmasına dayanır. • • Bu karşılıklara da nesne (object) denir. • Excel’de bu nesneler çalışma kitapları (workbook), çalışma sayfaları (worksheet), aralıklar (ranges), hücreler (cells) ve harici dosyalardır. Nesne Tabanlı Programlama ile gerçek dünyadaki varlıklar ile bu varlıkların yer aldığı ilişkilerin birebir modellenmesi ve bu modele göre kod yazılması mümkündür. Excel Nesneleri

Excel’de Programlama • Her bir Office uygulaması için en üst düzeydeki nesne Application olarak

Excel’de Programlama • Her bir Office uygulaması için en üst düzeydeki nesne Application olarak isimlendirilir. Bu nesne programın çalışan bir örneğini temsil eder. • Her Workbook nesnesi açık durumdaki bir. xls ya da. xlsx dosyasını temsil eder. Excel’i normal olarak başlattığınızda uygulama (Application) otomatik olarak yeni ve boş bir çalışma kitabı (workbook nesnesi) açar. • Excel çalışma kitabı içerisindeki her sayfa Worksheet nesnesidir. Range nesnesi belirli bir işlem için kullanılacak olan hedefi belirler. Bir aralık; tek bir hücreyi, bir çalışma sayfasındaki bütün bir satırı ya da sütunu veya çalışma kitabının farklı bölümlerinden seçilmiş hücre bloklarını temsil eder. İster bir çalışma sayfasına gömülü olsun, ister bir grafik sayfasında, bir çalışma kitabındaki her grafik bir chart nesnesi ile temsil edilir.

Nesnelerin arabirimlerini oluşturan 4 öğe vardır • Properties (Özellikler): Nesnelerin bilgi saklama yoludur. Bazen

Nesnelerin arabirimlerini oluşturan 4 öğe vardır • Properties (Özellikler): Nesnelerin bilgi saklama yoludur. Bazen kullanıcı bilgilerini temsil ederken bazen de nesnenin karakteristiğini temsil eder. Örneğin Range nesnesinin value özelliği hücredeki sayısal ya da metinsel veriyi temsil ederken Numberformat özelliği hücrenin içerdiği verilerin görüntülenme özelliğini temsil eder. • Methods (Metotlar): Nesne üzerinde eylem gerçekleştirir. Örneğin Range nesnesinin Select metodu belirtilen hücre bloğunu seçili hale getirir. • Events (Olaylar): Pek çok nesne olaylara cevap verir. Olayların çoğu kullanıcı tarafından gerçekleştirilen eylemlere karşılık gelir. Örneğin kullanıcının bir çalışma kitabını açması Open olayıdır. Bu olay gerçekleştiğinde yapılması istenen işlemler programcı tarafından belirlenir. • Collections (Kolesiyon): Bir öğenin birden fazla örneği için kullanılır. Örneğin birden fazla Excel çalışma dosyası açtığımızda Workbooks koleksiyonunda tutulur.

Makrolarla Çalışmak • • Makro: Sık yapılan işleri otomatikleştirir. • Makrolar 2 şekilde oluşturulur.

Makrolarla Çalışmak • • Makro: Sık yapılan işleri otomatikleştirir. • Makrolar 2 şekilde oluşturulur. Eğer Microsft Excel’de bir işi tekrarlı olarak (yinelemeli) yapıyorsanız, bu işi makro ile otomatik hale getirebilirsiniz. • • Kayıt (record) Yöntemi ile Makro Oluşturma Visual Basic Editörü ile Makro Oluşturma • Kayıt makroları otomatikleştirilecek işlemin adım yerine getirilmesi esnasında kayıt yapılarak oluşturulur. Gerekli kodlar Excel tarafından oluşturulur. • VBA makrolarında ise kodlar yazılır. Daha fazla programlama bilgisi gerektirir.

Kayıt Makroları • Kayıt makrosu özelliği, Visual Basic diline hakim olmayan, ama sürekli olarak

Kayıt Makroları • Kayıt makrosu özelliği, Visual Basic diline hakim olmayan, ama sürekli olarak yaptığı işi otomatikleştirmek isteyenler için var olan bir makro tipidir. • • Kayıt makrosunu bir kamera olarak düşünebilirsiniz. • • İşlemleriniz bittiği anda kamerayı yani kayıt makrosunu durdurursunuz. • Bundan sonra aynı işlemleri bir daha yapmanız gerektiğinde makroyu çalıştırırsınız ve makro sizin kaydetme aşamasında gerçekleştirdiğiniz bütün adımları gerçekleştirerek sizin yerinize işlemleri hızlıca yapar. Yaptığınız çalışmalarda kamera özelliği gibi kayıt makrosunu açarsınız ve işlem adımlarınızı gerçekleştirirsiniz. Ardından Excel sizin için bu makroyu ve her kaydettiğiniz makroyu bir komut dizesi içerisinde modül oluşturarak saklar.

Makro Güvenliği • Makrolar, genelde çok kullanışlı ve işlevsel olsa da bilgisayarımıza bulaşan virüslerin

Makro Güvenliği • Makrolar, genelde çok kullanışlı ve işlevsel olsa da bilgisayarımıza bulaşan virüslerin bir bölümü makro virüsleridir. • Nedeni ise makro oluşturmak için kullanılan Visual Basic işlev ve komutlarının virüs yazılımında kullanılabilir olması ve bunların kolaylıkla makro virüslerine çevrilebilmesidir. • • Dolayısıyla makrolar, bilgisayarımız için güvenlik riski oluşturmaktadır. Herhangi bir makro oluşturduğumuz bir dosyayı öncelikle makro içerebilen Excel çalışma kitabı olarak kaydetmemiz gerekir. Aksi halde Excel makro işlevlerini kullanılamaz hale getirebilir.

Makro Güvenliği • • Excel içerisinde makro güvenliği için belirli düzey ayarlamaları mevcuttur. •

Makro Güvenliği • • Excel içerisinde makro güvenliği için belirli düzey ayarlamaları mevcuttur. • Dosya menüsünden Seçenekler/Güven Merkezi Ayarları/Makro ayarları bölümüne geldiğimizde karşımıza çıkan seçenekler, makrolar için belirlenebilir güvenlik ayarlarıdır. Bu ayarlamalar sayesinde bilgisayarımızda açtığımız makro içeren Excel dosyalarında rastgele komut dosyası çalıştırmayı engelleyici özellikler bulunur.

Makro Güvenliği • • Şimdi bu ayarları inceleyim: • Bildirimde bulunarak tüm makroları devre

Makro Güvenliği • • Şimdi bu ayarları inceleyim: • Bildirimde bulunarak tüm makroları devre dışı bırak: Bu güvenlik düzeyi seçeneği Excel’de şu an varsayılan düzeydir. Makrolar yine devre dışıdır ancak, açılışta ekran görüntüsünde bizlere bildirimde bulunur. • Dijital olarak imzalanmış makrolar dışında tüm makroları devre dışı bırak: Bu güvenlik düzeyinde makro projelerine atanmış ve satın alınmış dijital imzalı kitaplar haricinde tüm kitaplar için makrolar devre dışı bırakılır. • Tüm makroları etkinleştir (Önerilmez, potansiyel olarak tehlikeli kodlar çalışabilir): Bu düzeyde güvenlik kalkanı sıfırlanarak tüm makrolar çalıştırılır. Bildirimde bulunmadan tüm makroları devre dışı bırak: Bu seçenek, Excel içerisinde kullanılabilir makroları etkisiz hale getirmeye yarar.

Makro Kaydetmek • Öncelikle Geliştirici menüsünü ekranımızda aktifleştirmek için Dosya/Seçenekler/Şeridi Özelleştir bölümünden Geliştirici menüsünün

Makro Kaydetmek • Öncelikle Geliştirici menüsünü ekranımızda aktifleştirmek için Dosya/Seçenekler/Şeridi Özelleştir bölümünden Geliştirici menüsünün onay kutusunu işaretliyoruz. • • Geliştirici menüsündeki Makro Kaydet tuşu ile kayıt başlatılır. • İstenirse makroyu çalıştırmak için bir kısayol belirlenebilir. Burada makroya atanacak kısayol tuşunun küçük harf olmasına dikkat edin. Eğer büyük harf atarsanız Ctrl+Shift tuşları ile kullanmanız gerekebilir. • Daha sonra makronun çalışacağı yer belirlenir. "Bu çalışma kitabı " olursa makro sadece o anki Excel kitabında çalışır. "Kişisel Makro Çalışma Kitabı " seçilirse hazırlanan makro kaydı Excel’in kitaplığına kaydedilir ve yeni açılan tüm Excel kitaplarında kullanılabilir. Son olarak "Yeni Çalışma Kitabı " türünü seçersek de bu makro yeni açılan çalışma kitabında da çalışacaktır Bir makro adı belirleyin. Makrolara isim verirlen rakamla başlanmaz, boşluk karakteri kullanılmaz. Boşluk karakteri yerine _ (alt tire) kullanın. Makro 12, ilk_makro gibi

Excel VBA • VBA aslında tüm Office uygulamaları ile kullanılabilen Ofis ortamında gömülü bir

Excel VBA • VBA aslında tüm Office uygulamaları ile kullanılabilen Ofis ortamında gömülü bir programlama dilidir. • Yani, VBA’yı öğrenerek temelde tüm Ofis uygulamalarında program yazabilirsiniz ve ofis ortamında otomasyon oluşturabilirsiniz. • Excel içinde bir makro ya da VBA kodu yazmak için Geliştirici sekmesi altındaki Visual Basic komutu kullanılmaktadır.

 • Excel VBA Visual Basic komutu seçildiğinde ekranda program kodları yazmanızı sağlayacak Kod

• Excel VBA Visual Basic komutu seçildiğinde ekranda program kodları yazmanızı sağlayacak Kod Düzenleme ekranı açılır.

Excel VBA Project Explorer: Bütün nesneler ve modüller bu pencereden takip edilir. Nesnelere ait

Excel VBA Project Explorer: Bütün nesneler ve modüller bu pencereden takip edilir. Nesnelere ait program kodlarının veya nesnelerin gösterilmesi bu pencereden sağlanır. Properties Penceresi: Geçerli nesnelerin özelliklerini görmek ve düzenlemek için kullanılır. Düzenleme Penceresi: Nesne ve modüller için yazılacak program kodları için kullanılır.

Kodlarla Çalışmak • • Modülleri Kullanmak • • Kodlar başka uygulamalarda da kullanılacak ise

Kodlarla Çalışmak • • Modülleri Kullanmak • • Kodlar başka uygulamalarda da kullanılacak ise için modül içine yazılmalıdır. VBA kaynak kodları Project Explorer penceresinde bulunan nesneler veya modüller içine yazılır. Excel’de 3 tip modül bulunmaktadır: 1. 2. 3. Standart Sınıf Kullanıcı Formu

Kodlarla Çalışmak • • Modülleri Kullanmak Modül eklemek için Insert menusu kullanılır. • Standart

Kodlarla Çalışmak • • Modülleri Kullanmak Modül eklemek için Insert menusu kullanılır. • Standart Modül: VBA yordam, fonksiyon ve veri tanımlamalarına ait kodlar içerir. • Sınıf Modülü: Görsel arabirim sunmayan nesneler kümesine ait kodlar içerir. • Kullanıcı Formu: Görsel arabirim nesnelerine ait kodlar içerir.

Kod Yazımında dikkat Edilecek Hususlar • • Kod Açıklaması kullanmak VBA’da kesme işaretinden (‘)

Kod Yazımında dikkat Edilecek Hususlar • • Kod Açıklaması kullanmak VBA’da kesme işaretinden (‘) sonra gelen her şey birer açıklamadır. Bunlar derleyici tarafından dikkate alınmazlar. Açıklama eklemek için satırın başında olmak kaydıyla Rem anahtar sözcüğü de kullanılır.

Kod Yazımında dikkat Edilecek Hususlar • • • VBA da Çok Deyimli Satırlar VBA

Kod Yazımında dikkat Edilecek Hususlar • • • VBA da Çok Deyimli Satırlar VBA kaynak kodu satır başına bir deyim olacak şekilde yazılır Ancak tek bir satırda : işareti ile ayrılarak birden fazla deyim yazılabilir.

Kod Yazımında dikkat Edilecek Hususlar • • Değişken Deklarasyonu • Eğer Option Explicit deyimi

Kod Yazımında dikkat Edilecek Hususlar • • Değişken Deklarasyonu • Eğer Option Explicit deyimi kullanılmışsa değişkenin kullanılmadan önce tanımlanması zorunludur. • Bu durum hata yapmayı önleyecektir. Programın çalıştırılması esnasında verilerin ya da nesne referanslarının saklanabileceği adlandırılmış konumlara değişken (variable) denir.

Kod Yazımında dikkat Edilecek Hususlar • • • Değişken ve Yordam (Procedure) İsimleri İlk

Kod Yazımında dikkat Edilecek Hususlar • • • Değişken ve Yordam (Procedure) İsimleri İlk karakterlerin harf olması gerekir. Boşluk karakteri ve. , !, @, &, # karakterleri kullanılmaz Maksimum uzunluk 255 karakterdir. VBA anahtar sözcükleri veya fonksiyonları kullanılmaz Anlaşılır ve açıklayıcı olması rahat ve kullanışlıdır.

 • Sayısal Veri Tipleri

• Sayısal Veri Tipleri

Veri Tipleri • • Metin Veri Tipi • • Dim isim as String şeklinde

Veri Tipleri • • Metin Veri Tipi • • Dim isim as String şeklinde tanımlanır. • Sabit uzunluk deklare edildikten sonra daha uzun metin atanırsa metnin fazlalık kısmı kaybolur Metin veya karakter katarı (String) veri tipi değişken uzunlukta katardan oluştuğu için deklarasyon esnasında büyüklüğü tanımlamak gerekmez. Sabit uzunlukta bir karakter katarı deklare edildiğinde sabit bir büyüklüğe sahip bir değişken tanımlanmış olur.

Veri Tipleri • • • Sabit Veri Tipi • • Nesne Veri Tipi Const

Veri Tipleri • • • Sabit Veri Tipi • • Nesne Veri Tipi Const anahtar sözcüğü ile sembolik bir sabit oluşturulur Bir kural olmamasına rağmen genellikle sabitler tamamen büyük harflerle ve kelimeler arası alt çizgilerle ayrılarak yazılır. Bir nesneye ait referansları tutar.

Veri Tipleri • • Mantıksal Veri Tipi • • Tarih Veri Tipi Sadece iki

Veri Tipleri • • Mantıksal Veri Tipi • • Tarih Veri Tipi Sadece iki değer alabilen (True/False) verileri tutmak için Boolean değişken tipinden faydalanılır. Date tarih saklamak için kullanılan değişken tipidir.

Veri Tipleri • • • Variant Tipi • Bu veri tipinin esnekliği her tipte

Veri Tipleri • • • Variant Tipi • Bu veri tipinin esnekliği her tipte veriyi tutabilmesinden kaynaklanır. Sayıları, metinleri, tarihleri veya dizileri tutabilir. VBA’nın en esnek değişken tipidir. Bir değişkeni bir tip belirtmeden deklare ederek variant değişken oluşturulabildiği gibi As Variant olarak da oluşturulur.

Veri Tipleri • • • Kullanıcı Tanımlı Tipler İki ya da daha çok öğe

Veri Tipleri • • • Kullanıcı Tanımlı Tipler İki ya da daha çok öğe içeren veri yapısı tanımlanmasını sağlar. Tanımlamalar type…end deyimi arasında yapılır

Diziler • Her bir öğeye ayrı erişmek için sayısal index kullanarak aynı isim altında

Diziler • Her bir öğeye ayrı erişmek için sayısal index kullanarak aynı isim altında birden fazla veri öğesini saklar. • Statik ve dinamik olmak üzere iki tip dizi vardır

Statik diziler • Diziler Deklare edildiğinde tanımlanan sabit bir öğe sayısına sahiptir. • Dim

Statik diziler • Diziler Deklare edildiğinde tanımlanan sabit bir öğe sayısına sahiptir. • Dim dizi_adi (n) As Type • Söz dizimi ile deklare edilir. N dizideki en yüksek indisi tanımlar. Type VBA’nın tanıdığı herhangi bir tip (integer, string, vb…) olabilir. • Option Base 1 ile index 1’den başlar

Diziler Dinamik diziler • • • Değişken sayıda öğeye sahiptir. • Herhangi bir anda

Diziler Dinamik diziler • • • Değişken sayıda öğeye sahiptir. • Herhangi bir anda dinamik dizinin eleman sayısı Redim deyimi ile genişletilebilir ya da azaltılabilir. • Redim deyiminin her kullanılışında dizinin içeriği silinir. Dizi elemanlarının değerlerini korumak için Redim Preserve deyimi kullanılır. Program çalışırken dizinin boyutu büyüyebilir ya da küçülebilir. Deklare ederken index belirtilmez.