With end with ifadelerinin nesne veya koleksiyonlarla kullanılması


VBA With ifadeleri, aynı nesne veya koleksiyonla ilgili karmaşık kodları basitleÅŸtirmenizi saÄŸlar. Sürekli olarak aynı nesneye gönderme yapmak yerine, bu nesneyi belirleyerek üzerinde bir dizi eylem gerçekleÅŸtirmek için bir With… End With ifadesi kullanabilirsiniz. Ortaya çıkan kodun okunması daha kolay olduÄŸu gibi, aynı zamamanda daha da hızlı çalışır. Bir with ifadesinin söz dizimi aÅŸağıdaki gibidir:

With object
 Olaylar (kodlar)
Ent with
Buradaki object, bir koleksiyonda dahil olmak üzere herhangi bir nesne olabilir. Örnek olarak bir pargrafın etkin biçemini, farklı bir biçem uygulamadan biraz süslemek için bir paragrafa uygulamak isteyebileceğiniz bir biçimlendirmeyi ele alalım. Diyelim ki farklı bir font daha büyük bir punto ve alt çizgisiz yazı karakterli uygulamaya, ancak paragrafın hala heading 1 biçemi ile belirlenmesine karar verdiğiniz. Bu biçimlendirmeyi ona aşağıdaki üç ifadeyle uygulayabirizsiniz:

Selection.Font.Name =”Arial Black”
Selection.Font.Size = 24
Selection.Font.Underline = wdUnderlineNone


Altenatif olarak bu kodu basitleştirmek için bir with ifadesi de kullanabilirsiniz.

With selection.Font
 .Name=”Arial Black”
.Size =24
.Underline = wdUnderlineNone
End with


Buradaki with ifadesi ile End with ifadesi arasındaki bütün ifadeler with ifadesi ile tanımlanan selection.font nesnesi için geçerlidir. Benzer bir biçimde, etkin seçime pragraf biçimlendirmesi uygulamak içinde bir with ifadesi kullanabilirsizin. Aşağıdaki ifadeler paragraf öncesi boşluğu, punto. Sonrası boşluğu da 12 punto yapar

With selection.ParagraphFormat
 .spaceBefore = 0
 .SpaceAfter=12
End with


Burada with ifadesi ile End with ifadesi arasındaki bütün ifadeler selection.ParagraphFormat nesnesi için geçerlidir. Aynı zamanda bu iki with ifadesini, her ikisinde de ortak olan Selection. Nesnesini kullanarak aşağıdaki şekilde birleştirebilirsizin:

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with


Ayrıca aşağıdaki örnekte olduğu gibi with ifadelerini iç içe de geçirebilirsiniz. Bu örnekte iç içe geçirmenin kullanılması (düzgün çalışsa da) şart değildir ama başka durumlarda onu gerekli bulabilirsiniz.

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
End with


With.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with
End with

İPUCU: VBA kullanmayı öğrenirken bir with ifadesi oluşturmanın en kolay yolu, makro kaydediciyi üzerinde çalışmak istediğiniz nesnelere erişim yöntemini ve üzerlerinde gerçekleştiriğiniz eylemleri kaydetmek için kullanmaktır. Bunu yaptıktan sonra kodu visual Basic Editörde düzenleyin ve bu eylemleri gerçekleştirmek için kaydedilmiş olan kodun daha basit bir sürümünü kullanan with ifadesi oluşturun.