VBA Evaluate işlevini kullanarak VBA kodunuzdan Excel formüllerini veya ifadelerini çalıştırabilirsiniz. Bu esnek işlev dizilerle çalışmanıza, değerleri dinamik olarak hesaplamanıza ve hatta Excel işlevlerini çalıştırmanıza olanak tanır. VBA Evaluate, VBA kodunuzdan doğrudan Excel'in hesaplama motoruyla çalışmanıza olanak tanır ve otomasyon ve veri işleme için çeşitli fırsatlar sunar. Aşağıdaki örnekte, "Concatenate" işlevini kullanarak iki dizeyi, "Hello" ve "World!", birleştirmek için VBA Evaluate işlevini nasıl kullanacağınızı anlayacağız .

Bu kodda, ilk olarak, birleştirmenin sonucunu depolamak için bir "concatenatedString" değişkeni tanımlanmıştır. VBA Evaluate işlevi, belirtilen dizeleri argüman olarak kullanarak "Concatenate" işlevini yürütür ve sonucu "concatenatedString" değişkenine atar. Son olarak, birleştirilen dize bir ileti kutusunda gösterilir.

- Excel formülleri veya ifadeleri VBA Evaluate işlevi kullanılarak VBA kodunda dinamik olarak hesaplanabilir. Bu, zor hesaplamaları ve veri işleme işlerini otomatikleştirmeyi mümkün kılar.
- Dizi formülleri, işlevler ve matematiksel ifadeler de dahil olmak üzere çok çeşitli Excel formüllerini işlemek için VBA Evaluate'i kullanabilirsiniz.
- VBA Evaluate ile VBA kodunda dizi işlemlerini verimli bir şekilde halledebilirsiniz. Bu, birden fazla hücre veya aralıkta hesaplamalar yapmak ve büyük veri kümelerini etkili bir şekilde işlemek için kullanışlıdır.
- Dizeler olarak depolanan ifadelerin veya formüllerin dinamik değerlendirmesini etkinleştirmek için, verilen dizeyi Excel'in hesaplama motorunda yürütülebilir kod olarak ele almak üzere VBA Dizeyi Kod Olarak Değerlendir işlevini kullanın.
Sözdizimi
VBA Evaluate fonksiyonunun sözdizimi basittir.
Değerlendir (İsim) Evalueate(Name)
Ad, bir formül veya değerlendirmek istediğiniz bir nesnenin adı olabilir. Bu ad 255 karakteri geçmemelidir.
Not:
Microsoft Excel VBA'daki VBA Değerlendirme yöntemi, aşağıdakiler de dahil olmak üzere çeşitli ad ve referans türlerini destekler:
| İsim Türü | Tanım |
|---|---|
| Formüller (Formulas) | Excel formüllerinin dize olarak çalıştırılmasına olanak tanır. |
| A1 tarzı referanslar (A1-style references) | A1 gösteriminde tek hücreli referanslar. |
| Aralıklar (Ranges) | Referanslarla aralık, kesişim ve birleşim operatörlerini (iki nokta üst üste, boşluk ve virgül) kullanın. |
| Tanımlı isimler (Defined names) | Makronun dilinde herhangi bir isim belirtin. |
| Dış referanslar (External references) | Başka bir çalışma kitabındaki hücrelere veya adlara başvurmak için “!” operatörünü kullanın. |
| Grafik nesneleri(Chart objects) | Efsane, Çizim Alanı veya Seri gibi grafik nesnelerinin özelliklerine ve yöntemlerine erişin. |
| Form Kontrol numarası(Form Control Number) | Bir çalışma sayfasındaki Form Denetimlerine sayılar veya adlar kullanarak başvurun. Örneğin, hem "Etiket 1" hem de "1" bir Etiket Form Denetimine başvurmak için birbirinin yerine kullanılabilir. |
VBA Değerlendirme Fonksiyonu Nasıl Kullanılır?
VBA'da Değerlendir fonksiyonunun kullanımı şöyledir:
Adım 1: Excel'i açın ve VBA düzenleyicisini açmak için ALT + F11 tuşlarına basın .

Adım 2: Menüde “Ekle”ye tıklayıp “Modül”ü seçerek yeni bir modül ekleyin.

Adım 3: Yeni modül penceresinde VBA Evaluate fonksiyonunu içeren VBA kodunuzu yazabilirsiniz .
Adım 4: Excel ifadelerini veya formüllerini çalıştırmak için VBA kodunuzda VBA Evaluate işlevini kullanın. VBA Evaluate işlevine istenen formülü veya ifadeyi bir dize girişi olarak verin.
Sonuç doğrudan kodunuzda kullanılabilir veya bir değişkene kaydedilebilir.
Örneğin:
Result = Evaluate(“SUM(A1:A10)”)
Adım 5: Kodlamayı tamamladıktan sonra VBA kodunuzu çalıştırabilirsiniz.
VBA düzenleyici penceresini kapatabilir ve makroyu doğrudan Excel çalışma kitabından çalıştırabilirsiniz. Aksi takdirde, VBA düzenleyicisinin araç çubuğundaki “Çalıştır” düğmesine tıklayın.
Örnekler
Örnek 1
Bu örnekte, faktöriyel ifadesini oluşturup değerlendirerek ve ardından sonucu bir ileti kutusunda görüntüleyerek, VBA Evaluate fonksiyonunu kullanarak verilen bir sayının faktöriyelini dinamik olarak nasıl hesaplayacağımızı öğreneceğiz.
Adım 1: Yeni modülde, “CalculateFactorial” adlı bir alt rutin oluşturarak başlayın.

Adım 2: Daha sonra faktöriyelini hesaplamak istediğimiz sayıyı saklamak için num değişkenini Integer veri türü olarak tanımlayalım.

Adım 3: Faktöriyel hesaplamasının sonucunu depolamak için Variant veri türü olarak “factorialResult” adlı bir değişken de bildirin.

Adım 4: Bu adımda, faktöriyelini hesaplamak istediğimiz sayıyı temsil eden num değişkenine 5 değerini atayın.

Adım 5: Sonra, bir döngü kullanarak faktöriyel ifadesini dinamik olarak temsil eden bir “factorialExpression” dizesi oluşturun.
Bu döngü 2'den num'a kadar yineleme yapar ve her sayıyı çarpma operatörü ile ifadeye ekler.

Adım 6: Şimdi faktöriyel ifadesinin sonucunu hesaplamak için VBA Evaluate fonksiyonunu kullanacağız.

Adım 7: Son olarak, belirtilen sayının faktöriyelini gösteren bir mesaj kutusu görüntülemek için mesaj kutusu fonksiyonunu kullanacağız.

Adım 8: Kodu çalıştırdığınızda belirtilen sayının (bu durumda 5) faktöriyelini hesaplar ve sonucu bir ileti kutusunda görüntüler.

İşte tam kod:
Sub CalculateFactorial()
Dim num As Integer
Dim factorialResult As Variant
num = 5
Dim factorialExpression As String
factorialExpression = “1”
For i = 2 To num
factorialExpression = factorialExpression & ” * ” & i
Next i
factorialResult = Evaluate(factorialExpression)
MsgBox “Factorial of ” & num & ” is: ” & factorialResult
End Sub
Örnek 2
Bu örnekte, Sheet1'in A1 hücresinde saklanan değeri almak ve ardından değeri "A1'deki Değer:" etiketinin yanında bir ileti kutusunda görüntülemek için VBA Değerlendir işlevini kullanacağız.
Adım 1: İlk olarak CellReferences adında bir alt rutin tanımlayarak başlıyoruz.

Adım 2: Bu adımda, hücrenin değerini saklamak için Variant veri türünde “cellValue” adlı bir değişken tanımlanır.

Adım 3: Burada, Sheet1'den A1 hücresinin değerini almak ve bunu cellValue değişkeninde depolamak için VBA Evaluate fonksiyonunu kullanacağız.

Adım 4: Şimdi, A1 hücresinin değerini görüntülemek için mesaj kutusu fonksiyonunu kullanacağız.

Adım 5: Son olarak kodu çalıştırdığınızda VBA'da A1 hücresinin değerini gösteren bir mesaj kutusu görünecektir.
Bu durumda A1 hücresinde “Merhaba Dünya!” sözcüğü geçtiği için mesaj kutusunda da aynı mesaj görüntülenecektir.

İşte tam kod:
Sub CellReferences()
Dim cellValue As Variant
cellValue = Evaluate(“Sheet1!A1”) ‘ Evaluates the value in cell A1 of Sheet1
MsgBox “Value in A1: ” & cellValue
End Sub
Örnek 3
Bu örnekte, belirli bir hücre aralığının (örneğin, A1 hücresinden A5 hücresine) toplamını dinamik olarak hesaplamak için VBA Evaluate fonksiyonunun kullanımını göreceğiz. Bunun için bir SUM formül dizesi oluşturup, bunu değerlendirip, ardından sonucu bir ileti kutusunda görüntüleyeceğiz.

Adım 1: İlk olarak “CalculateRangeSum” adında bir alt rutin oluşturarak başlıyoruz.

Adım 2: Daha sonra, toplam hesaplamasının sonucunu saklamak için Variant veri türü olarak “sumResult” adlı bir değişken bildiriyoruz.

Adım 3: Toplamını hesaplamak istediğimiz aralığın adresini (A1:A5) saklamak için “rangeAddress” adlı başka bir değişken tanımlayın.

Adım 4 : Daha sonra aralık adresini kullanarak SUM formülünü dinamik olarak temsil eden bir “formulaString” dizesi yazın .

Adım 5: Bu adımda, belirtilen aralığın toplamını hesaplamak için VBA Evaluate fonksiyonunu kullanacağız.

Adım 6: Belirtilen aralığın toplamını gösteren bir mesaj kutusu görüntülemek için mesaj kutusu özelliğini kullanacağız.

Adım 7: Şimdi makroyu kaydedin ve çalıştır'a tıklayın.
Kodu çalıştırdığınızda belirtilen aralığın (A1:A5) toplamını dinamik olarak hesaplar ve sonucu bir ileti kutusunda görüntüler.

İşte tam kod:
Sub CalculateRangeSum()
Dim sumResult As Variant
Dim rangeAddress As String
rangeAddress = “A1:A5”
Dim formulaString As String
formulaString = “=SUM(” & rangeAddress & “)”
sumResult = Evaluate(formulaString)
MsgBox “Sum of range ” & rangeAddress & ” is: ” & sumResult
End Sub
Dikkat Edilmesi Gereken Önemli Noktalar
- Özellikle kullanıcı girdisi veya harici veri kaynakları içerdiğinde bu dizeleri dinamik olarak oluştururken dikkatli olun, çünkü VBA Evaluate formülleri veya ifadeleri dize olarak alır.
- VBA Evaluate, Excel formüllerini ve ifadelerini yönetmede esnek olsa bile sınırlamalara sahiptir. Formül dışı ifadeleri çalıştırmak, Excel nesneleriyle doğrudan çalışmak veya VBA kodunda akışı veya koşullu mantığı kontrol etmek için kullanılamaz.
- VBA Formül Dizesi Değerlendirmesi özelliğini kullanarak, formül dizelerini dinamik olarak işleyerek VBA kodunuz içerisinde dize olarak oluşturulan Excel formüllerini değerlendirebilirsiniz.
