VBA ByRef - Excel VBA ByRef İşlevini Kullanarak Bağımsız Değişken Geçirme

Excel VBA ByRef İşlev Bağımsız Değişkeni

VBA'da ByRef, kodumuzdaki herhangi bir argümana referans sağladığımız, özel fonksiyonlar yaptığımızda ve ByRef fonksiyonunu kullandığımız fonksiyondan önce daha önce tanımlanan herhangi bir değişkenin değerini kullanmak istediğimizde, referans olarak adlandırılan bir fonksiyondur . sözdizimi, İşlev Fonksiyon Adı kadar basittir (Veri Türü olarak ByRef Değişkeni).

Byref kullanarak değişken değerini değiştirmeden orijinal değişken değerine işaret edebiliriz. Bu, değişken değerini doğrudan VBA alt prosedürüne veya VBA işlevine geçirmek gibidir.

VBA ByRef Bağımsız Değişkenini Kullanarak Bağımsız Değişken Nasıl Geçilir?

Örnek 1

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

Kod1:

Alt Prosedür1 () Dim k As Integer k = 50 Prosedür2 k MsgBox k End Sub

Kod2:

Alt Prosedür2 (ByRef k As Integer) k = k + 10 End Sub

İlk prosedürde, "k" değişkenini Tamsayı olarak tanımladım.

Sonra bu değişkene değeri 50 olarak atadım.

Bundan sonra yeni bir satır ekledim yani

Prosedür 2 k

Bu ikinci prosedür adıdır. Bu prosedürde, parantez içindeki değişkeni VBA'da String olarak tanımladım, ancak "ByRef" kelimesini kullandım.

ByRef k As Tamsayı

Burada "k" değişkeninin değerini şu şekilde atadım:

k = k + 10

Tamam, şimdi F8 tuşuna basarak kodu adım adım çalıştıracağım.

F8 tuşuna iki kez daha basın ve "k" değişkeninin değerini görmek için "k" değişkeninin üzerine bir imleç yerleştirin.

Değeri 50 olarak atadığımız için değeri 50 olarak gösteriyor. Şimdi ikinci prosedür adı olan Procedure2 k satırını vurguladı .

Şimdi F8 tuşuna basarsam, mevcut prosedürden atlayacak ve ikinci prosedüre geçecektir.

ByRef kelimesini kullandığımız için, yukarıdaki prosedürden "k" değişkenini taşıdı.

F8 tuşuna iki kez basın. Önceki alt prosedüre geri dönecektir. İkinci prosedürde fark ederseniz, formülü k = k + 10 olarak uygulamışımdır, yani “k” değeri 50 ise buna 10, yani toplamda 60 ekler.

Şimdi kod ilk prosedürde çalışıyor ve bu prosedürde değişken "k" değeri 50'dir. Ancak F8 tuşuna basın ve sonucu bir mesaj kutusunda görün.

Bu prosedürde 50 varsayılan değeri yerine sonucu 60 olarak aldık.

60 almamızın nedeni, ikinci prosedürde "ByRef" i uyguladığımız için denklem sonucunu (k = k + 10) mevcut prosedüre taşıdı.

Burada birinci değişken "k" değeri 50 ve ikinci prosedürde değişken "k" değeri k + 10 yani 60'tır ve birinci prosedüre taşınır.

İlk prosedürde "k" değişkeninin orijinal değeri 50 idi, bu nedenle By Ref, k = k + 10 yani k = 50 +10 = 60 denklemini uygulayarak orijinal değeri 50'den 60'a değiştirdi.

Örnek 2

Şimdi bir örneğe daha bakın.

Kod 1:

Sub P1 () Dim MyNumber As Long MyNumber = 1 Call Change_ByRef (MyNumber) 'MyNumber, Change_ByRef prosedürü MsgBox "My Number is now:" & MyNumber End Sub


Kod 2:

Sub Change_ByRef (ByRef NewNumber As Long) NewNumber = 14 End Sub

Bu, önceki kodla tamamen aynı şekilde çalışır.

Başlangıçta "MyNumber" değişkeninin değeri 1'dir. Daha sonra aşağıdaki prosedürü ismiyle çağırırız.

Call Change_ByRef (MyNumber)

Bu prosedürde değişkenin değeri 14'tür.

Yani önceki prosedüre döndüğünde yeni değeri değişkene 14 olarak atayacaktır.

Ilginç makaleler...