Favorilerine Ekle | Giriş Sayfan Yap | Tavsiye Et

 

Kurs Tanıtım Sayfası | Süper Üye Kimdir? | Menü Tasarımı Konulu Örnek Ders
Kod İndir| Hazır Kodlar | Makaleler| İpuçları | VB .NET Kursu | Dersler | Forum | Alt Bölümler | Servisler
    Merhaba Misafir
    anasayfa » .NET makaleleri » net » VBA Kodlarını VB.NET?e Taşımak ? Bölüm 2
Üye Girişi
Kullanıcı Adı:  
Şifre : 
Kaydet ?
Siteden tam olarak faydalanabilmek için üye olmalısınız.
Unuttuğunuz şifrenizi öğrenebilmek için kayıt sırasında verdiğiniz Hatırlatma Cevabı'nı bilmeniz gereklidir.
Şifre hatırlatma işlevini sadece 3 defa kullanma hakkınız vardır.
Kullanıcı adını ve şifresini unutan üyelere email ile yardım verilmez.

Aktivasyon Gelmedi mi?Aktivasyon mesajınız email adresinize gelmedi mi?
Buraya tıklayarak bir kez daha aktivasyon mesajı gönderilmesini sağlayabilirsiniz.
Lütfen email hesabınızın BULK ve SPAM klasörlerini de kontrol ediniz.
Rastgele Makale

com port uygulama

Yazar: mrtdmr
elektronik cihaz üreticisiyim.vb ile tanıstım.cihazlarımı com uygulamalı halıne getırdım.com alısında cok zorlandım.hexmı dec mı bın mı asc mı dıye.gelen tum baytın tek tek nasıl alınması gerektıgını ogrendım sızle paylasmak ıstedım.


Webmasterlar
Sitenize Ekleyin!
Sitenizde "Son Eklenen 10 Visual Basic Yazısı"'nı göstermek ve içeriğini zenginleştirmek için buraya tıklayınız.

Vbasicmaster.com'a link verin!
Aşağıdaki minik banneri sitenize eklemek için tıklayın!

Üye Sayısı:
Ziyaretçiler nerede?
Yayın № : 4810
Yayın Tar:27.10.2005
Yazar : x-x-x-03
Hit :3419

Bu Yazarın Yazıları Sadece bu yazarın  göster
Bu Yazıyı Tavsiye Et

VBA Kodlarını VB.NET?e Taşımak ? Bölüm 2

VBA Kodlarını VB.NET?e taşımak yazı dizisinin bu bölümde VBA?den VB.NET?e geçirilirken, varsayılan özellikler, atamalar, TypeOf ve TypeName fonksiyonlarının kullanımı, akış kontrol yapıları, hata yönetimi, geç bağlama (late binding), erken bağlama (early binding) ve çoklu değişken ilanlarında dikkat edilmesi gereken noktalara değineceğiz.


Varsayılan Özelliklerler


VBA?de belirli nesnelerin varsayılan özellikleri vardır. Bu nedenle kod yazarken, örneğin bir atama sırasında nesnenin hiçbir özelliğini belirtmezseniz, nesnenin varsayılan özelliği atamaya dahil edilir. Ancak, VB.NET?te varsayılan özellikler sadece parametreleri olan özellikler için geçerlidir. Bu problem, erken bağlama kullanılan ve atama yapılan nesnenin tipi bilindiği her durumda, uygun özelliğin belirtilmesi yoluyla çözülebilir. Atamanın yapıldığı tip bilinirse, ona karşılık gelecek varsayılan özellik de büyük ihtimalle belirlenebilecektir. Aşağıdaki örnekte, Excel içerisinde GenelToplam adlı bir alanın (range) değeri okunmaktadır. ?Range?lerin varsayılan özellikleri, ?Value? özellikleridir:





Atamalar


VBA?de atama yapılırken, atanan değerin belirtilen nesnenin kendisi mi, yoksa varsayılan özelliği mi olduğu ?Set? ifadesi ile belirlenir. VB.NET varsayılan özellikleri desteklemediğinden, ?Set? ifadesini kullanmaya gerek yoktur. Bu nedenle kodlar VBA?den VB.NET?e geçirilirken VBA?deki ?Set? ifadelerinin silinmesi gerekir. Buna ek olarak, VB.NET artık ?Let? ifadesini de desteklememektedir. Örneğin:





TypeOf Fonksiyonu


VBA?de refereans edilen bir nesnenin belirli bir tipte olup olmadığı TypeOf fonksiyonu kullanılarak belirlenir. VB.NET aynı şekilde TypeOf fonksiyonunu desteklemektedir. Ancak, VB.NET?te VBA?de olmayan, kullanıcı tanımlı tipler olan ?structure? adında yapılar mevcuttur. ?Structure? yapıları nesne tipinde olmadıkları için TypeOf fonksiyonu ile tipleri sorgulanamaz.





TypeName Fonksiyonu


TypeName fonksiyonu TypeOf fonksiyonuna benzer şekilde, kendisine argüman olarak verien nesnenin tipini tip olarak değilde metin olarak vermektedir. VB.NET TypeName fonksiyonunu desteklemektedir; ancak sonuç olarak döndürdüğü metinde farklılıklar vardır. Öneğin, aşağıdaki VBA kodu çalıştırıldığında, açılan mesaj kutusunda TypeName olarak ?WorkBook? yazarken, VB.NET kodu çalıştırıldığında , açılan mesaj kutusunda TypeName olarak ?MyWorkbook? yazar:





Akış Kontrol Yapıları


VB.NET?teki akış kontrol yapıları ile VBA akış kontrol yapıları arasında While döngüsü dışında pek bir değişiklik yoktur. VBA?de While ifadesi, WEnd anahtar kelimesi ile biter. VB.NET?te ise, bir While ifadesi End While anahtar kelimesi ile bitmektedir. VB.NET no GoSub. . .Return ve On. . .GoSub ifadelerini artık desteklememektedir. Bu nedenle bu ifadelerin kullanıldığı fonksyionları genellikle tamamen baştan yazmak gerekecektir. VB.NET de VBA gibi GoTo ifadesi desteklemektedir; ve sözkonusu fonksiyon iki dildede aynı şekilde çalışmaktadır. Burada dikkat edilmesi gereken nokta, VB.NET?te Error kelimesinin bir anahtar kelime olmasından dolayı GoTo etiketi olamayacağıdır. VBA kodlarında GoTo kullanıldığı durumlarda çoğunlukla görünen Error etiketlerini kodları VB.NET?e taşırken değiştirmek gerekecektir. Aşağıda GoTo ifadesindeki değişiklik ile ilgili örnek bulunmaktadır:





Hata Yönetimi


VB.NET?in ?exception handling? denilen tamamen yeni bir hata yönetim mekanizması vardır. Bu yapıda Try, Catch ve Finally anahtar kelimeleri kullanılır. VB.NET dahilinde tüm hatalar bu yolla kontrol edilir. Örneğin:





Bu kod örneğinde ortalama fiyat hesaplanmaya çalışılmakta, her hangi bir nedenle hata olduğu zaman ise ortalama fiyatın değeri Sıfır (0) olarak belirlenmektedir. Buradaki örnekte ?catch? bloğu oluşan tüm hataları toplamaktadır. Böylesi bir yaklaşım gerçek hayatta çok tercih edilmemelidir. Bunun yerine daha uygun olanı oluşabilecek hataların tanımlanarak ?catch? bloğunun sadece o tipteki hataları yakalamasını sağlamaktır. Bu durumda, beklenmeyen bir hata oluştuğunda, kodun daha üst seviyelerindeki hata blokları hatayı daha iyi kontrol edebilecektir. ?Finally? ifadesi altında yer alan kodlar hata olsa da olmasa da her zaman işletilir.


Geç Bağlama ve Erken Bağlama


VBA içerisinde bir değişkenin ilanını tipini belirtmeden yapabilirsiniz. Böyle ilan edilen değişkenlerin tipi Variant olarak kabul edilir. Örneğin:





Yukarıdaki örnekte, paragrafSayisi01 değişkeni VariantLong tipine geç bağlanmıştır. paragrafSayisi01 değişkeni ilek ilan edildiğinde tipi Variant iken, kendisine Application.ActiveDocument.Paragraphs.Count değeri atandığı zaman VariantLong tipi geç bağlanmış olmaktadır. paragrafSayisi02 değişkeni ise Long tipine erken bağlanmıştır, çünkü, paragrafSayisi02 değişkeninin ilanı sırasında tipi belirtilmiştir. Teknik olarak, VB.NET dahilinde geç bağlama yapılamamaktadır.





Yukarıdaki kodu derlediğinizde, öncelikle paragrafSayisi01 değişkeni Object tipinde ilan edilir. Me.Paragraphs.Count değeri paragrafSayisi değerine atandığı zaman, atanan değer ?stack? üzerine değil, ?heap? içerisindeki bir nesnenin içerisine konur. paragrafSayisi değişkeni ise sözkonusu nesnenin heap?deki adresine referans tutar.


paragrafSayisi02 ise ilan edildiği anda Long tipi ile ilişkilendirilir. Daha sonra Me.Paragraphs.Count değeri paragrafSayisi02 değerine atandığında, sözkonusu değer ?stack? üzerinde paragrafSayisi02 değişkenin olduğu yere yazılır. Sonuç olarak paragrafSayisi01 değişleni ile ilgili işlemler paragrafSayisi02 değişkeni ile ilgili işlemlerden daha yavaş çalışır. Bu nedenle, VBA içerisinde geç bağalama yapılan kodlar, VB.NET?e geçirilirken, değişken ilanı sırasında tiplerinin belirlenmesi performans açısından avantaj getirecektir. İster VBA ister VB.NET ile çalışın, değişkenleri erken bağlamak her zaman performans açısından size avantaj sağlayacaktır.


Çoklu Değişken İlanı


VBA?de değişik tipteki değişkenleri aynı ifade içerisinde ilan etme şansınız vardır. Burada her değişkenin tipinin ayrı ayrı belirtilmesi gerekir, belirtmediğiniz taktirde değişkenin tipi Variant olarak algılanacaktır. Aşağıdaki örnekte çoklu değişken ilanı sonucu değişkenlerin tipleri ifade edilmektedir:





VB.NET de çoklu değişken ilanını desteklemektedir, ancak küçük bir nüansla birlikte. Yukarıda vermiş olduğumuz VBA örneğini VB.NET?te aşağıdaki gibi taşımak uygun olacaktır:





Sonuç


Bu makalede VBA?den VB.NET?e geçerken dikkat edilmesi gereken noktların üzerinde durduk, ancak kalan birkaç konu daha var. Onları da bu dizinin son makalesinde sizlerle paylaşacağız.





Bu sayfa için henüz yorum eklenmemiş.

© Hakan Ersöz 2000-2013| Üyelik Sözleşmesi | | Ödeme Bildirimi
Sitemizden yenilikleri hemen öğrenin, pop upları engelleyin, chat yapın... ToolBarımızı indirin:
Vasicmaster Toolbar'ı indirin