VBA ByVal - ByVal Fonksiyon Argümanı nasıl kullanılır? (Örnekler)

Excel VBA ByVal Fonksiyon Bağımsız Değişkeni

ByVal , VBA'da bir ifadedir. ByVal, ByVal'ın kısaltmasıdır, yani alt prosedür prosedürden çağrıldığında, değişkenlerin değeri, çağrılan yeni prosedürden yeni değere sıfırlanır.

VBA'da, farklı işlevlerde çağrılan işlevlerle çalışırken, işlev çağrıldığında orijinal bağımsız değişkenin değerinin değiştiği belirli durumlar vardır; byval ifadesi, prosedürü veya argümanın değerini değiştiren kodu yasaklar.

Açıklamayı okuyarak anlamanın kolay olmadığını biliyorum, ancak pratik işlev örnekleri ile, aslında daha iyi anlayabiliriz.

ByVal Argümanı VBA'da nasıl kullanılır?

Örnek 1

Örneğin, aşağıdaki VBA kodlarına bakın.

Kod:

Alt Makro1 () Dim k As Integer k = 50 Makro2 k Mesaj Kutusu k End Sub
Sub Macro2 (ByVal k As Integer) k = k + 5 End Sub

Yukarıdaki iki makro prosedürde, prosedürler arasında ortak bir değişken "k" var. Sonucu görmeden bunu detaylı olarak anlatayım.

İlk Makro'da, "k" değişkenine 50 değerini atadık.

Tamsayı Olarak Dim k k = 50

Ardından, birinci Makrodan ikinci makro prosedürünü çağırdık.

Makro2 k

Macro2'de, değişkenin değerini k = k + 5 olarak sıfırladık. Bu makroda, değeri "k" değişkenine atamak için ByVal bağımsız değişkenini kullandık.

Şimdi "ByVal" i anlamak için, F8 tuşuna basarak VBA kodunu satır satır çalıştıralım.

# 1 - Önce F8 tuşuna basıldığında, Macro1'in ilk satırını vurgulayacaktır.

Zamanın bu noktasında, "k" değişkeninin üzerine bir imleç yerleştirin ve "k" değişkeninin değerini göstermelidir.

Şu anda "k" değeri sıfırdır.

# 2 - F8 tuşuna bir kez daha basın, üçüncü satıra atlayacaktır.

Şimdi bile, "k" değeri hala sıfırdır.

# 3 - Şimdi F8 tuşuna basın ve k'nin değerini görün.

"K" değeri 50 olarak ayarlandığından ve kod yürütüldüğünden, değer 50 olarak gösterildiğinden

# 4 - Şimdi, vurgulanan satır "Macro2 k" dir, yani, F8 tuşuna basıldığında, ikinci prosedür olan Macro2'ye atlayacaktır.

# 5 - Şimdi bile, bu prosedürde "k" değişkeninin değeri de 50 olarak gösteriliyor. Ancak bu makro içinde, "k" değişkeninin değerini k = k + 5 yani 55 olarak sıfırlıyoruz. Şimdi F8 tuşuna iki kez daha.

Yukarıda gördüğünüz gibi "k" değeri 55'tir.

# 6 - F8 tuşuna basın ve Macro1 prosedürüne geri dönecektir.

Makro, Macro1 orijinal prosedürüne geri atladığında, değişken "k" değerimiz artık bu prosedürdeki orijinal değer, yani 50'dir.

F8 tuşuna bastığınızda VBA'da mesaj kutusunda sadece 50 adet görebiliriz.

Dolayısıyla, makalenin başında da söylediğimiz gibi, "ByVal" argümanı, değişkenin değerini birinci makrodan ikinciye "satırıyla karşılaştığında" taşıdığı halde, bir prosedürden diğerine değer taşımaz. ByVal ”orijinal makroya döndüğünde, değeri yalnızca prosedürde orijinal değere sıfırlar.

Örnek 2

Şimdi aşağıdaki iki makroya bir göz atın.

Kod:

Sub P1 () Dim k As Integer: k = 10 Çağrı P2 (k) MsgBox k End Sub
Sub P2 (ByVal k As Integer) k = 15 End Sub
  • Bu, ilk örneğe benzer. "P1" makrosunda , 10 değerini "k" değişkenine atadık ve aynı makroda "P1 " , "k" değişkenli ikinci makroyu "P2" olarak adlandırdık .
  • İkinci makro "P2" de ByVal argümanını kullandık ve bu sefer "k" değişkeninin değeri 15'tir.

Bu makro, "k" değişkeninin değerini "P1" makrosundan "P2 " makrosuna on olarak taşır ve bu makroda, değer 15'e sıfırlanacaktır, ancak makroyu ilk makroya bitirmek için geri geldiği anda "P1" , "k" değeri 15'e değil, 10'a geri döner.

Hatırlanacak şeyler

ByVal argümanı, makroyu çalıştırdıktan sonra bile değişken değerini etkilemez, ancak Ref argümanıyla değişkenin değerini bir makrodan diğerine taşıyabiliriz.

Ilginç makaleler...