EXCEL VBA BYREF ARGUMENT

Excel VBA ByRef Argümanı Nedir?

Excel VBA'da, ByRef anahtar sözcüğünü kullanarak fonksiyonlara referansla argümanlar geçirebilirsiniz. Bir argümanı referansla geçirdiğinizde, fonksiyon içindeki argümanda yapılan herhangi bir değişiklik, çağıran koddaki orijinal değişkeni etkileyecektir.

Aşağıdaki örneği ele alalım. ByRef kullanarak değişkene başvuran bir fonksiyonu çağırdığınız bir alt rutin oluşturur. VBA ByRef argümanını kullanarak, değeri bir tam sayı olarak adlandırabilir ve 2 artırabiliriz, bunun sonucunda çıktı, kodun altında görüldüğü gibi, Hemen sekmesinde yazdırılır.

VBA ByRef Giriş
VBA ByRef Giriş - Çıktı

ByRef, genellikle fonksiyonlara veya alt rutinlere argümanlar geçirmek için kullanılır. VBA ByRef argümanı geçirildiğinde, fonksiyon veya alt rutin içindeki parametrede yapılan değişiklikler, o rutinin kapsamı dışında da devam eder. Bu, daha esnek ve dinamik veri manipülasyonuna olanak tanır ve değişkenler üzerinde gelişmiş kontrol sağlar.

Önemli Noktalar

  • ByRef, VBA'da bir parametre geçirme mekanizmasıdır. Bir argüman ByRef geçirildiğinde, bir fonksiyon veya alt rutin içindeki parametrede yapılan değişiklikler, çağıran koddaki orijinal değişkeni etkiler.
  • ByRef, bellekteki değişkenlerin veya veri yapılarının doğrudan değiştirilmesine olanak tanır.
  • Değişkenler üzerinde esneklik ve kontrol sağlayarak dinamik veri manipülasyonuna olanak tanır.
  • ByRef, genellikle dizilerle birlikte verileri etkin bir şekilde güncellemek ve düzenlemek için kullanılır.
  • Özellikle büyük veri yapıları için gereksiz veri kopyalamanın önüne geçerek kod verimliliğini artırabilir.
  • ByRef, yinelemeli fonksiyonlar veya özel hata işleme rutinleri gibi bazı gelişmiş tekniklerin uygulanması için olmazsa olmazdır.


VBA ByRef Argümanı kullanılarak nasıl geçilir?

VBA ByRef Argümanını geçirmek için aşağıdaki adımları gerçekleştiriyoruz:

Adım 1: Araç çubuğundaki “ Geliştirici sekmesine ” gidin ve “Visual Basic” seçeneğine tıklayın. Şimdi, işlevler ve alt prosedürler eklemek için VBA Editörü açılır. Ardından, yeni bir modül veya boş sayfa oluşturmak için “Ekle” ve “Modül” düğmelerine tıklayın.

VBA Byref - geçiş - Adım 1 - Visual Basic
VBA Byref - geçiş - Adım 1 - Modül

Adım 2: Dize değerlerini değiştirmek için bir alt rutin tanımlayın.

VBA Byref - geçiş - Adım 2.jpg

Adım 3: 'name' değişkenini String veri türü olarak tanımlayın.

VBA Byref - geçiş - Adım 3

Adım 4: 'name' dize değişkeni için değeri başlatın.

VBA Byref - geçiş - Adım 4

Adım 5: Excel VBA'da değişiklikleri Hemen sekmesinde görüntülemek için ByRef alt rutinini çağırmadan önce adı yazdırın.

VBA Byref - geçiş - Adım 5

Adım 6: VBA ByRef Argümanını bir Dize değişkeni olarak kullanarak alt rutini çağırın.

VBA Byref - geçiş - Adım 6.jpg

Adım 7: Adım 5'te çağrılan alt rutini tanımlayın.

VBA Byref - geçiş - Adım 7

Adım 8: 'str' değerini tanımlayın.

VBA Byref - geçiş - Adım 8

Kod:

Sub StringByRef()
Dim name As String
name = “John”
Debug.Print “Before calling the subroutine: ” & name
ModifyNameByRef name
Debug.Print “After calling the subroutine: ” & name
End Sub

Sub ModifyNameByRef(ByRef str As String)
str = “Jane”
End Sub

Adım 9: Kodu Excel VBA'da F5'e veya 'çalıştır' düğmesine basarak çalıştırın. Çıktı aşağıda gösterilmiştir:

VBA Byref - geçiş - Adım 9

Örnekler

ByRef'in fonksiyonlarda nasıl kullanılacağını gösteren bazı örneklere bakalım.

Örnek 1

Bir fonksiyonda VBA ByRef argümanını kullanarak bir boolean değeri döndürmemiz gereken bir örneği ele alalım.

Adım 1: VBA ByRef Boolean'ını geçirmek için bir alt prosedür başlatın.

VBA Byref - Örnek 1 - Adım 1

Adım 2: VBA'da 'n'yi Tamsayı veri türü olarak ve 'res'i Boolean veri türü olarak bildirin .

VBA Byref - Örnek 1 - Adım 2

Adım 3: InputBox() fonksiyonunun yardımıyla kullanıcıdan 'n' değerini alın.

VBA Byref - Örnek 1 - Adım 3

Adım 4: Boolean fonksiyonu döndüren ve VBA ByRef bağımsız değişkenini kabul eden tam sayı ve Boolean değişkenlerini çağırın.

VBA Byref - Örnek 1 - Adım 4.jpg

Adım 5: Debug.Print kullanarak res değerini yazdırın.

VBA Byref - Örnek 1 - Adım 5

Adım 6: Verilen sayının çift olup olmadığını kontrol eden BooleanExample fonksiyonunu tanımlayın.

VBA Byref - Örnek 1 - Adım 6

Adım 7: Kullanıcının verdiği sayının çift olup olmadığını kontrol etmek için bir If-Else koşulu başlatın. Bu, VBA Mod Operatörü kullanılarak yapılır.

VBA Byref - Örnek 1 - Adım 7

Kod:

Sub AnotherByRefExample()
Dim n As Integer
Dim res As Boolean
n = InputBox(“Sayıyı girin”)
Debug.Print “Değer: ” & n
BooleanExample n, res
Debug.Print “Çift mi?: ” & res
Alt Son

Fonksiyon BooleanExample(ByRef num As Integer, ByRef value As Boolean)
Eğer num Mod 2 = 0 ise O zaman
değer = True
Değilse: değer = False
Son Eğer
Son Fonksiyon
Sub AnotherByRefExample()

Dim n As Integer
Dim res As Boolean
n = InputBox(“Enter number”)
Debug.Print “Value is: ” & n
BooleanExample n, res
Debug.Print “Is it Even?: ” & res
End Sub

Function BooleanExample(ByRef num As Integer, ByRef value As Boolean)
If num Mod 2 = 0 Then
value = True
Else: value = False
End If
End Function

Adım 8: Adım 5'e geçin. Kodu çalıştırın, cevap Excel VBA'daki Hemen sekmesinde yazdırılacaktır.

VBA Byref - Örnek 1 - Adım 8
VBA Byref - Örnek 1 - Adım 8 - Eşit Çıktı

Sonuç olarak,

VBA Byref - Örnek 1 - Adım 8 - tek-Çıktı

Örnek 2

VBA ByRef Dizisi'ni geçirmemiz ve dizideki tüm elemanlara çarpma işlemi yapmamız gereken bir örneği ele alalım.

Adım 1: ByRef VBA Dizisini gerçekleştirmek için bir alt prosedür başlatın .

Örnek 2 - Adım 1

Adım 2: Değişken number()'ı bir Integer veri türü olarak bildirin. Excel VBA'da değişkenden sonraki parantezler bir diziyi belirtir.

Örnek 2 - Adım 2

Adım 3: Dizi boyutunu VBA'da bildirin ve bu dizi için dizinin boyut kapasitesine kadar (bu durumda 3) değerler atayın.

Örnek 2 - Adım 3

Adım 4: İşlemleri gerçekleştirmeden önce değişkenleri yazdırın. Dizideki öğeleri yazdırmak için kullanıcı tanımlı bir alt rutin oluşturun.

Örnek 2 - Adım 4

Adım 5: Her değeri 2 ile çarpan alt rutini çağırın. (Adım 6'ya gidin)

Örnek 2 - Adım 5

Hem 4. Adımdaki hem de 5. Adımdaki alt rutinler, ana alt rutin tanımlandıktan sonra tanımlanır.

Adım 6: Alt rutini çağırdıktan sonra değerleri yazdırın.

Örnek 2 - Adım 6

Adım 7: Adım 5'te çağrılan alt rutini tanımlayın.

Örnek 2 - Adım 7

Adım 8: FOR döngüsünde tüm dizi elemanlarını dolaşacak olan 'I' adında yinelemeli bir değişken bildirin.

Örnek 2 - Adım 8

Adım 9: Dizinin en soldaki elemanından (LBound() kullanılarak tanımlanmıştır) ve en sağdaki elemanından (UBound() fonksiyonu kullanılarak bulunmuştur) başlayan bir FOR döngüsü başlatın.

Örnek 2 - Adım 9

Adım 10: Tüm elemanları 2 ile çarpın.

Örnek 2 - Adım 10

Adım 11: Adım 4 ve 6'da çağrılan dizi elemanlarını yazdırmak için kullanılan alt rutini tanımlayın.

Örnek 2 - Adım 11

Burada alt rutini VBA ByRef Dizisi ile çağırıyoruz.

Adım 12: Dizi içinde döngü yapacak yinelemeli bir değişken bildirin.

Örnek 2 - Adım 12

Adım 13: Dizinin en soldaki elemanından (LBound() kullanılarak tanımlanmıştır) ve en sağdaki elemanından ( UBound() fonksiyonu kullanılarak bulunmuştur) başlayan bir FOR döngüsü başlatın.

Örnek 2 - Adım 13

Adım 14: Debug.Print kullanarak tüm elemanları indeksle birlikte yazdırın.

Örnek 2 - Adım 14

Kod:

Sub ArrayByRef()
Dim numbers() As Integer
ReDim numbers(1 To 3)
numbers(1) = 10
numbers(2) = 20
numbers(3) = 30
Debug.Print “Before calling the subroutine:”
DisplayArray numbers
DoubleArrayValues numbers
Debug.Print “After calling the subroutine:”
DisplayArray numbers
End Sub

Sub DoubleArrayValues(ByRef arr() As Integer)
Dim i As Integer
For i = LBound(arr) To UBound(arr)
arr(i) = arr(i) * 2
Next i
End Sub

Sub DisplayArray(ByRef arr() As Integer)
Dim i As Integer
For i = LBound(arr) To UBound(arr)
Debug.Print “Element ” & i & “: ” & arr(i)
Next i

End Sub

Adım 15: Yukarıdaki kodu yazdırın. Çıktı Immediate sekmesinde yazdırılır.

Örnek 2 - Adım 15

Dikkat Edilmesi Gereken Önemli Noktalar

  • Orijinal değişkeni değiştirirken veya güncellenmiş bilgiyi alırken ByRef'i kullanın.
  • ByRef parametresinin hem fonksiyon/altprogram bildiriminde hem de çağrıda ByRef anahtar sözcüğü ile doğru şekilde bildirildiğinden emin olun.
  • ByRef'e geçirilen değişkenin kapsamını, fonksiyon/alt rutin içinde erişilebilir olduğundan emin olmak için göz önünde bulundurun.
  • Sabitler veya ifadeler gibi salt okunur değişkenlerle ByRef kullanmayın.
  • ByRef'in her zaman en iyi seçim olacağını varsaymayın; ByVal'ın veya diğer yaklaşımların sizin özel senaryonuz için daha uygun olup olmadığını değerlendirin.
  • Değişkenleri doğrudan ByRef ile değiştirmenin olası yan etkilerini göz ardı etmeyin; kodunuzun diğer bölümleri üzerindeki etkisini göz önünde bulundurun.


Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...