EXCEL VBA BYVAL FONKSİYONU

Excel VBA ByVal Fonksiyonu Argümanı Nedir?

VBA ByVal (kısa biçimi “By Value”), bir prosedüre veya fonksiyona değerler geçirmek için kullanılan bir fonksiyon argümanı bildirimidir. Bir parametre ByVal ile bildirildiğinde, argümanın değeri prosedüre veya fonksiyona geçirilir ve bir kopyası oluşturulur. Bu, prosedür veya fonksiyon içinde parametrede yapılan herhangi bir değişikliğin argümanın orijinal değerini etkilemediği anlamına gelir.

VBA ByVal Örneği - 1
  • İşte VBA'da ByVal kullanımını gösteren küçük bir örnek. "MultiplyByTwo" alt yordamı, bir Integer olarak bildirilen ve ByVal kullanılarak değer olarak geçirilen bir argüman olan "number" alır.
  • Alt programın içerisinde “sayı” değeri 2 ile çarpılır.
  • “Main” alt yordamında “myNumber” adlı bir değişken bildirilir ve bu değişkene 5 değeri atanır.
  • “MultiplyByTwo” alt yordamı, argüman olarak “myNumber” ile çağrılır. ByVal kullanıldığından, “myNumber”ın bir kopyası “MultiplyByTwo” alt yordamına geçirilir.
  • Alt rutin çağrısından sonra, “sayı”nın değiştirilmiş değerini gösteren bir mesaj kutusu görüntülenir.
VBA ByVal Örneği - 2

İkinci mesaj kutusu görüntülendiğinde, “MultiplyByTwo” alt yordamında ByVal kullanılarak yapılan değişiklik, “myNumber”ın orijinal değeri olan “5” sayısını etkilemediğinden, “Main” alt yordamındaki “myNumber”ın orijinal değerini gösterir.

VBA ByVal Örneği - 3

Önemli Noktalar
  • ByVal, VBA'da orijinal değeri etkilemeden bir prosedüre veya fonksiyona değerin bir kopyasını geçiren bir fonksiyon argüman bildirimidir.
  • Bağımsız değişkenlerin orijinal değerlerinde değişiklik yapılmasını engellemek istediğinizde ByVal'ı kullanmak yararlıdır.
  • VBA ByVal Default, bir alt rutin veya fonksiyon çağrılırken belirli bir değer sağlanmadığında bir parametre için varsayılan bir değer sağlar.
  • ByVal kullanılarak nesneler geçirildiğinde, nesnenin özelliklerinde yapılan değişiklikler, prosedür veya fonksiyonun dışında orijinal nesneyi etkileyebilir.

VBA'da ByVal Argümanı Nasıl Kullanılır?

VBA ByVal argümanını kullanmak için şu adımları izleyin.

  1. Argüman gerektiren bir prosedür veya fonksiyon tanımlayın. Örneğin:


    VBA'da ByVal Argümanı Nasıl Kullanılır - Adım 1

    “Increment” alt yordamında, bir argüman olan “num” bir Integer olarak bildirilir ve ByVal kullanılarak değer olarak geçirilir. Alt yordamın içinde, “num” değeri 1 artırılır ve “num”ın güncellenmiş değerini gösteren bir ileti kutusu görüntülenir.

  2. Prosedürü veya fonksiyonu çağırın ve değere göre bir argüman geçirin. Örneğin:


    VBA'da ByVal Argümanı Nasıl Kullanılır - Adım 2

    “Main” alt yordamında, bir “myNumber” değişkeni bildirilir ve 5 atanır. “Increment” alt yordamı, bir argüman olarak “myNumber” ile çağrılır. ByVal kullanıldığından, “myNumber”ın bir kopyası “Increment” alt yordamına geçirilir. Alt yordam çağrısından sonra, “myNumber”ın orijinal değerini gösteren başka bir ileti kutusu görüntülenir.

  3. Şimdi kodu çalıştırdığınızda, "inside Increment: 6" yazan ilk mesaj kutusunun göründüğünü göreceksiniz.


    VBA'da ByVal Argümanı Nasıl Kullanılır - Adım 3a

    Tamam'a tıkladıktan sonra, başka bir mesaj kutusu "Artıştan Sonra: 5" diyor.



    Bu kodun amacı ByVal'ın VBA'daki davranışını göstermektir.

Sub Increment (ByVal num As Integer)
num = num + 1
MsgBox “Inside Increment:” & num
End Sub

Sub Main ()
Dim myNumber As Integer 
myNumber = 5
Increment myNumber
MsgBox “After Increment: ” & myNumber 
End Sub


Örnekler

ByVal'ın VBA'da kullanımını gösteren bazı örneklere bakalım.

Örnek #1

Bu örnekte bir sayının karesini hesaplamak için VBA ByVal'ı kullanalım.

  • Adım 1: Excel’de Alt + F11 tuşlarına basarak VBA Düzenleyicisi’ni açın.
Excel'de VBA ByVal - Örnek 1 - Adım 1
  • Adım 2: Üst menüden “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.
Örnek 1 - Adım 2
  • Adım 3: ByVal ile tanımlanan bir argüman numarası alan Kare alt rutinini tanımlayın.
Excel'de VBA ByVal - Örnek 1 - Adım 3
  • Double olarak tanımlanan bir argüman numarası alan ve ByVal kullanarak değer olarak geçiren Square adında bir alt rutin tanımlıyoruz.
  • Altyordamın içerisinde Double tipinde bir result değişkeni tanımlıyoruz.
  • Bir sayının karesini kendisiyle çarparak buluruz ve çıkan sonucu sonuca atarız.
  • Sonuç değişkenini kullanarak sayının karesini gösteren bir mesaj kutusu görüntülenir.
  • Adım 4: Ana alt rutini tanımlayın.
Örnek 1 - Adım 4
  • “Main()” adında bir alt rutin tanımlıyoruz.
  • Double tipinde “inputNumber” adlı bir değişken tanımlıyoruz.
  • “InputBox” fonksiyonu, kullanıcıdan sayı girmesini istemek için kullanılır ve kullanıcı tarafından girilen değer “inputNumber”a atanır.
  • Kare alt yordamı “inputNumber” argümanı ile çağrılır.
  • Adım 5 VBA kodu çalıştırıldığında kullanıcıdan bir sayı girmesini isteyen bir iletişim kutusu görüntülenir .
Örnek 1 - Adım 5
  • Adım 6: Sayıyı girdikten sonra, Square alt yordamı girilen sayıyı argüman olarak kullanarak çağrılır. Örneğin, 27 sayısını girelim.
Excel'de VBA ByVal - Örnek 1 - Adım 6
  • Adım 7: Kare alt rutini sayının karesini hesaplar ve bunu bir mesaj kutusunda görüntüler. Çıktı, giriş sayısının karesini gösterir, bu da 729'dur.
Excel'de VBA ByVal - Örnek 1 - Adım 7

İşte tam kod:

Sub Square(ByVal number As Double)
Dim result As Double
result = number * number
MsgBox “The square of ” & number & ” is: ” & result
End Sub

Sub Main()
Dim inputNumber As Double
inputNumber = InputBox(“Enter a number:”)
Square inputNumber
End Sub


Örnek #2

Bu örnekte ByVal'in bize argümanları değere göre geçirmemize nasıl olanak sağladığını ve alt rutin içinde yapılan değişikliklerin rutin dışında kalıcı olmamasını nasıl sağladığını göstereceğiz.

  • Adım 1: ByVal ile tanımlanan bir argüman metni alan ModifyString alt yordamını tanımlayın.
Excel VBA ByVal - Örnek 2 - Adım 1
  • ModifyString adında, String olarak tanımlanmış bir text argümanı alan ve VBA ByVal kullanarak değere göre geçiren bir alt rutin tanımlıyoruz.
  •  Alt programın içerisinde, “Modified: ” değerini orijinal değeriyle birleştirerek  ' text' değerini değiştiriyoruz .
  • Bir ileti kutusu 'metin'in değiştirilmiş değerini gösterir  .
  • Adım 2: Ana alt rutini tanımlayın.
Örnek 2 - Adım 2
  • “Main” adında bir alt rutin tanımlıyoruz.
  • VBA veri tipi String olan bir message değişkeni tanımlıyoruz ve buna “Hello” atıyoruz.
  • ModifyString alt yordamı argüman olarak “message” olarak adlandırılır.
  • VBA ByVal kullanıldığından “mesajın” bir kopyası ModifyString alt rutinine geçirilir.
  • Alt rutin çağrısından sonra, "mesajın" orijinal değerini gösteren bir mesaj kutusu görüntülenir.
  • Adım 3: Kod çalıştırıldığında ModifyString alt yordamı, message değişkeni argüman olarak kullanılarak çağrılır.

Alt programın içerisinde metnin değeri, “Modified: ” ifadesinin metnin orijinal değeri ile birleştirilmesiyle değiştirilir.

Alt programın içindeki metnin değiştirilmiş değerini gösteren bir ileti kutusu görüntülenir.

Örnek 2 - Adım 3
  • Adım 4: Alt rutin çağrısından sonra, mesajın orijinal değerini gösteren başka bir mesaj kutusu görüntülenir.
Excel VBA ByVal - Örnek 2 - Adım 4

Çıktı, ModifyString alt rutini içindeki metinde yapılan değişikliğin, VBA ByVal kullanımı nedeniyle mesajın orijinal değerini etkilemediğini göstermektedir.

İşte tam kod:

Sub ModifyString(ByVal text As String)
text = “Modified: ” & text
MsgBox “Inside ModifyString: ” & text
End Sub

Sub Main()
Dim message As String
message = “Hello”
ModifyString message
MsgBox “After ModifyString: ” & message
End Sub

Dikkat Edilmesi Gereken Önemli Noktalar

  • ByVal Optional, ByVal anahtar sözcüğünü kullanarak argümanları değere göre geçirmek ve VBA alt rutinlerinde veya fonksiyonlarında parametreleri isteğe bağlı olarak bildirmek anlamına gelir. Bu kombinasyon, değere göre geçmenize ve isteğe bağlı parametreler için değerler sağlamada esnekliğe sahip olmanıza olanak tanır.
  • VBA ByVal dizisi, bir diziyi değere göre bir alt programa veya fonksiyona geçirmenize olanak tanır; böylece dizinin içindeki herhangi bir değişiklik, dizinin dışındaki orijinal diziyi etkilemez.
  • VBA ByVal kullanarak bir nesne değişkeni geçirirseniz, nesnenin kendisine değil, nesneye referansın bir kopyasını geçirirsiniz. Bu, nesnenin özelliklerini değiştirmenin prosedür veya fonksiyon dışında orijinal nesneyi etkileyeceği anlamına gelir.

 VBA’da ByVal ve ByRef arasındaki fark nedir?

ByVal ile bir parametre bildirildiğinde, değerin bir kopyası prosedüre veya fonksiyona geçirilir ve yapılan herhangi bir değişiklik argümanın orijinal değerini etkilemez.
Öte yandan, ByRef ile bir parametre bildirildiğinde (“By Reference”ın kısaltması), orijinal argümana bir referans geçirilir ve bu da argümanın orijinal değerini etkilemek için parametrenin değiştirilmesine olanak tanır.

2. Excel'deki VBA ByVal fonksiyonu neden çalışmıyor?

VBA'daki ByVal işlevinin beklendiği gibi çalışmamasının birkaç nedeni olabilir. Bir olasılık, parametrenin ByVal anahtar sözcüğüyle yanlış bildirilmiş olmasıdır.
Başka bir neden, prosedür veya işlev içindeki kodda bir sorun olabilir. Ek olarak, geçirilen argüman bir nesneyse, nesnenin özelliklerinde yapılan değişiklikler, nesne referanslarının doğası nedeniyle prosedür veya işlev dışındaki orijinal nesneyi yine de etkileyebilir.

3. ByVal'ın VBA'daki kullanımı nedir?

VBA ByVal'ı kullanmak, argümanların orijinal değerlerini değiştirmeden prosedürlere veya işlevlere argümanlar geçirmenize olanak tanır. Özellikle orijinal değerlerin değişmeden kalmasını ve istenmeyen değişiklikleri önlemeyi sağlamak için faydalıdır. ByVal'ı kullanarak, başlangıç ​​değerini olduğu gibi bırakarak değerin bir kopyasıyla çalışabilirsiniz.



Yorum Gönder

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