Menguasai Evaluate di VBA Excel untuk Rumus yang Lebih Fleksibel

Saat menulis kode VBA, Anda mungkin pernah menggunakan objek WorksheetFunction untuk menjalankan fungsi-fungsi Excel seperti SUM, AVERAGE, atau VLOOKUP.

Sebagai contoh:

Application.WorksheetFunction.Sum(Range("A1:A10"))

Cara tersebut memang benar, tetapi tidak selalu menjadi pilihan yang paling praktis. Untuk rumus yang panjang atau melibatkan beberapa fungsi sekaligus, penulisan kode dapat menjadi cukup rumit.

Di sinilah Evaluate menjadi alternatif yang menarik. Dengan Evaluate, Anda dapat menjalankan rumus Excel langsung dari VBA tanpa harus menuliskannya ke dalam worksheet.


Apa Itu Evaluate?

Evaluate adalah metode milik objek Application yang digunakan untuk mengevaluasi sebuah ekspresi atau rumus Excel, kemudian mengembalikan hasilnya ke VBA.

Sintaks dasarnya adalah:

Application.Evaluate(Ekspresi)

atau dapat ditulis lebih singkat:

Evaluate(Ekspresi)

Parameter Ekspresi berupa teks (string) yang berisi rumus atau referensi Excel.


Menjalankan Fungsi SUM

Contoh paling sederhana adalah menghitung total nilai pada suatu range.

Dim Total As Double

Total = Evaluate("SUM(A1:A10)")

MsgBox Total

Rumus SUM dijalankan langsung oleh Excel, sedangkan hasilnya disimpan ke dalam variabel VBA.


Menggunakan Rumus AVERAGE

Selain SUM, hampir semua fungsi worksheet dapat digunakan.

Dim RataRata As Double

RataRata = Evaluate("AVERAGE(B2:B20)")

Kode tersebut menghasilkan nilai rata-rata dari range yang ditentukan.


Menggunakan Referensi Sel

Evaluate juga dapat mengevaluasi referensi sel.

Dim Nilai As Variant

Nilai = Evaluate("C5")

Hasilnya sama seperti membaca nilai menggunakan:

Range("C5").Value

Namun, Evaluate menjadi lebih berguna ketika referensi dibentuk secara dinamis.


Menggunakan Formula yang Dibentuk dari Variabel

Misalkan jumlah data berubah-ubah sehingga alamat range harus dibuat secara otomatis.

Dim LastRow As Long
Dim Total As Double

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

Total = Evaluate("SUM(A2:A" & LastRow & ")")

Dengan teknik ini, rumus akan selalu menyesuaikan jumlah data yang tersedia.


Menggunakan Fungsi IF

Evaluate juga dapat menjalankan rumus yang lebih kompleks.

Dim Hasil As Variant

Hasil = Evaluate("IF(A1>=75,""Lulus"",""Tidak Lulus"")")

Jika nilai pada A1 minimal 75, hasilnya adalah Lulus. Jika tidak, hasilnya Tidak Lulus.

Perhatikan penggunaan tanda kutip ganda ("") di dalam string rumus.


Menggunakan Evaluate untuk Mengembalikan Range

Tidak hanya menghasilkan nilai, Evaluate juga dapat mengembalikan objek Range.

Evaluate("A1:C5").Interior.Color = vbYellow

Kode tersebut memberi warna kuning pada range A1:C5.


Studi Kasus

Misalkan Anda ingin menghitung total penjualan tanpa menulis rumus pada worksheet.

Dim TotalPenjualan As Currency

TotalPenjualan = Evaluate("SUM(D2:D100)")

MsgBox "Total Penjualan : " & Format(TotalPenjualan, "#,##0")

Perhitungan dilakukan sepenuhnya di dalam VBA sehingga worksheet tetap bersih dari rumus tambahan.


Evaluate vs WorksheetFunction

EvaluateWorksheetFunction
Menjalankan rumus Excel dalam bentuk string Memanggil fungsi Excel melalui objek VBA
Lebih fleksibel untuk rumus dinamis Lebih jelas saat menggunakan fungsi tunggal
Dapat menjalankan ekspresi yang kompleks Sintaks lebih panjang untuk rumus tertentu
Dapat mengembalikan nilai maupun objek Range Umumnya mengembalikan nilai hasil fungsi

Tidak ada metode yang lebih baik secara mutlak. Pilihlah yang paling sesuai dengan kebutuhan kode Anda.


Kesalahan yang Sering Dilakukan

Salah Menulis Rumus

Karena rumus ditulis dalam bentuk string, kesalahan penulisan akan menyebabkan Evaluate menghasilkan error atau nilai yang tidak sesuai.

Selalu uji rumus terlebih dahulu di worksheet sebelum memasukkannya ke dalam VBA.


Lupa Menggabungkan Variabel

Perhatikan contoh berikut.

Salah:

Evaluate("SUM(A2:ALastRow)")

Benar:

Evaluate("SUM(A2:A" & LastRow & ")")

Gunakan operator & untuk menyisipkan nilai variabel ke dalam rumus.


Menggunakan Evaluate untuk Semua Kasus

Walaupun fleksibel, Evaluate tidak selalu menjadi pilihan terbaik.

Untuk operasi sederhana seperti membaca nilai satu sel, penggunaan Range.Value biasanya lebih mudah dipahami.


Tips Praktis

💡 Gunakan Evaluate ketika rumus dibentuk secara dinamis.

💡 Uji rumus di worksheet sebelum digunakan dalam VBA.

💡 Kombinasikan Evaluate dengan variabel seperti LastRow agar rumus selalu menyesuaikan jumlah data.

💡 Gunakan WorksheetFunction jika hanya memanggil satu fungsi sederhana dan menginginkan kode yang lebih eksplisit.

💡 Hindari membuat string rumus yang terlalu panjang karena akan lebih sulit dibaca dan dipelihara.


Ringkasan

Metode / KonsepFungsi
Evaluate() Menjalankan rumus Excel dari VBA
Application.Evaluate() Bentuk lengkap dari Evaluate
String Rumus Menentukan ekspresi yang akan dievaluasi
Variabel Membuat rumus menjadi dinamis
WorksheetFunction Alternatif untuk menjalankan fungsi Excel

Kesimpulan

Evaluate merupakan salah satu fitur VBA Excel yang memungkinkan Anda menjalankan rumus Excel langsung dari dalam kode. Kemampuannya mengevaluasi ekspresi, memanfaatkan fungsi worksheet, serta membentuk rumus secara dinamis membuat Evaluate sangat berguna dalam berbagai proses otomatisasi. Dengan memahami kapan harus menggunakan Evaluate dan kapan lebih tepat menggunakan WorksheetFunction, Anda dapat menulis kode yang lebih fleksibel, ringkas, dan mudah dikembangkan.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.