VBA Özel ve Genel Prosedürler (Alt Öğeler ve İşlevler)

Bu öğretici, VBA'daki genel ve özel bildirimler arasındaki farkı ve modüllerin özel olarak nasıl belirleneceğini açıklayacaktır.

Kamu ve Özel Alt Prosedürler

Prosedürler (Alt ve İşlevler), VBA'da Özel veya Genel olarak bildirilebilir. Genel iseler, bunları Excel Makro Penceresinden görebileceğiniz ve VBA Projenizin herhangi bir yerinden çağrılabilecekleri anlamına gelir. Özel iseler, Excel Makro Penceresinde görülemezler ve yalnızca bildirildikleri Modül içinde kullanılabilirler (normal yöntemler kullanılarak, diğer modüllerden özel prosedürlere erişmenin yolları için bu makalenin sonuna bakın) .

Genel işlevler, Excel çalışma sayfasındaki yerleşik Excel işlevleri gibi çağrılabilir.

Not: Değişkenler ve Sabitler ayrıca Public veya Private olabilir.

Excel Makro Penceresi

Varsayılan olarak, Excel Makroları (çoğu VBA Prosedürü), Makro Penceresinde çalışma kitabı kullanıcıları tarafından görülebilir:

bunlar düşünülür Halk prosedürler. Sub ifadesinin önüne “Public” ekleyerek prosedürleri açıkça genel olarak tanımlayabilirsiniz:

123 Herkese Açık Alt HelloWorld()MsgBox "Merhaba Dünya"Alt Bitiş

Prosedürü Public olarak tanımlamazsanız, Public olarak kabul edilecektir.

Bir prosedürü Özel olarak ilan etmek için, prosedür alt ifadesinin önüne “Private” eklemeniz yeterlidir:

123 Özel Abone HelloEveryone()MsgBox "Herkese Merhaba"Alt Bitiş

İkinci prosedür, Makro penceresinde Excel kullanıcıları tarafından görülemez, ancak yine de VBA kodunuzda kullanılabilir.

Argümanlı Prosedürler

Alt prosedürlerin argümanları olabilir. Bağımsız değişkenler alt prosedüre girdilerdir:

123 Sub Hello(string olarak strName)MsgBox "Merhaba" & strNameAlt Bitiş

Bir alt prosedürün argümanları varsa, argümanları bildirmenin bir yolu olmadığından, Public olarak bildirilmiş olup olmadığına bakılmaksızın Makro Penceresinde asla görünmez.

Ayrıca işlevler, Public olarak bildirilmiş olsalar da, Makro Penceresinde asla görünmezler.

Excel'deki genel işlevler, bir çalışma sayfasında doğrudan "Kullanıcı Tanımlı İşlev" (UDF) olarak kullanılabilir. Bu temelde doğrudan bir çalışma sayfasında çağrılabilen özel bir formüldür. Bunlar, "İşlev Ekle" penceresindeki "Kullanıcı Tanımlı" kategorisinde bulunabilir veya doğrudan bir hücreye yazılabilir.

VBA Programlama | Code Generator sizin için çalışıyor!

VBA Projenizde Modüller Arasındaki Prosedürleri Kullanma

Genel prosedürler, VBA Projenizdeki herhangi bir modül veya formdan çağrılabilir.

Farklı bir modülden özel bir prosedür çağırmaya çalışmak bir hataya neden olacaktır (Not: Çözüm için bu makalenin altına bakın).

Not: Sınıf modüllerindeki genel prosedürler ve değişkenler biraz farklı davranır ve bu makalenin kapsamı dışındadır.

Farklı modüller, her ikisinin de özel olması koşuluyla aynı adla prosedürleri saklayabilir.

İki veya daha fazla prosedür aynı ada sahipse ve genel olarak bildirilirse, kodu çalıştırırken 'Belirsiz Ad algılandı' derleme hatası alırsınız.

Özel Modüller

Varsayılan olarak, modüller herkese açıktır.

Bir modülü özel yapmak için modülün başına aşağıdaki anahtar kelimeyi koyarsınız.

1 Seçenek Özel Modül

Bir modülü özel olarak bildirirseniz, modüldeki hiçbir prosedür Excel kullanıcıları tarafından görülmeyecektir. İşlev prosedürleri, İşlev Ekle penceresinde görünmez, ancak kullanıcı işlevin adını bildiği sürece Excel sayfasında kullanılabilir!

Alt prosedürler Makro Penceresinde görünmeyecek, ancak VBA projesinde kullanılmaya devam edecek.

Farklı Bir Modülden Özel Prosedüre Erişme

Yukarıda belirtildiği gibi, Özel Prosedürlere diğer kod modüllerinde “normal” yöntemlerle erişilemez. Ancak, aşağıdakileri kullanarak özel prosedürlere erişebilirsiniz. Uygulama.Çalıştır VBA'da mevcut komut.

Aşağıdaki 3 modülü göz önünde bulundurun.

Modül 2 bir Özel Modül ile bir Halk Alt Prosedür, Modül3 ise Halk modül ile bir Özel Alt Prosedür.

Modül1'de Merhaba Dünya'yı arayabiliriz - Seçenek Özel Modül üstte yer alması, Alt Prosedürü çağırmamızı engellemez - tek yaptığı, Alt Prosedürü Makro Penceresinde gizlemek.

Ayrıca Call ifadesine ihtiyacımız yok - kodun okunmasını kolaylaştırmak için orada.

Kod ayrıca aşağıdaki gibi görünebilir:

1234 Alt ÇağrıHelloFromPrivate()'Özel Modülden bir abone çağırınSelam DünyaAlt Bitiş

VBA'yı kullanarak HelloWorld Alt Prosedürünü de çalıştırabiliriz. Uygulama.Çalıştır emretmek.

Ancak Modül3'te GoodMorningWorld prosedürü Özel olarak ilan edilmiştir. 'Normal' yani Call deyimini kullanarak başka bir modülden onu arayamazsınız.

kullanmak zorundasın Application.RunKomut başka bir modülden bir Private Sub çalıştırmak için.

1234 Alt CallGoodMorning()'genel bir modülden özel bir alt çalıştırApplication.Run ("GoodMorningWorld")Alt Bitiş

kullandığınızda dikkat edin Application.RunKomut komutunda, Alt Yordam adını ters virgül içine koymanız gerekir.

GoodMorningWorld Alt Prosedürünü çalıştırmak için Call ifadesini kullanmayı denersek, bir hata oluşur.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave