Memberi titik pemisah ribuan di VBA
Beginilah kalau
develop aplikasi pakai tool dengan fitur yang sangat terbatas. Ceritanya saya akan memberi titik pemisah ribuan pada bilangan dengan panjang belum diketahui. Saya menggunakan VBA yang terdapat dalam Ms Excel. Kita tahu fitur yang dimiliki VBA sangatlah terbatas, jadi terpaksa saya menggunakan cara-cara yang konvensional.
Dalam aplikasi yang saya buat, semua nilai bilangan yang ditampilkan harus dipisah per ribuan dengan titik. Misal 34.500 bukan 34500. Setelah dipikir-pikir sejenak, saya rasa yang paling tepat adalah menggunakan fungsi rekursi (yaitu fungsi yang memanggil dirinya sendiri, mudahnya). Fungsi rekursi yang saya buat hanya menggunakan sebuah inputan yaitu teks bilangan yang hendak ditambahkan tanda titik didalamnya.
Source codenya :
Function giveDot(ByVal strTxt As String) As String
Dim depan, belakang As String
Dim temp As String
depan = Mid(strTxt, 1, getPanjang(strTxt) – 3)
belakang = Mid(strTxt, getPanjang(strTxt) – 2, 3)
If getPanjang(depan) <= 3 Then
giveDot = depan & “.” & belakang
Else
temp = giveDot(depan)
belakang = Mid(temp, getPanjang(temp) – 2, 3) & “.” & belakang
depan = Mid(temp, 1, getPanjang(temp) – 4)
giveDot = depan & “.” & belakang
End If
End Function
Pada fungsi diatas, variabel depan digunakan untuk menyimpan nilai angka di sebelah kiri tanda titik, sedangkan belakang digunakan untuk menyimpan sebelah kanan tanda titik. Fungsi ini akan berhenti setelah diketahui bahwa panjang dari string depan <=3, dengan kata lain sudah tidak membutuhkan tambahan titik pemisah lagi. Variabel temp akan menyimpan nilai rekursi dari fungsi ini untuk kemudian ditambahkan pada variabel belakang. Jadi pada setiap pemanggilan fungsi, isi dari variabel belakang akan terus bertambah panjang sedangkan isi variabel depan akan terus menjadi sedikit. Dan pada akhir eksekusi dari fungsi ini, panjang variabel depan tidak akan lebih dari 3 dan variabel belakang akan berisi kelompok bilangan-bilangan yang telah terpisah dengan titik. Misal : depan = 32 dan belakang = 423.423. Kemudian fungsi akan mengembalikan nilai dari variabel depan ditambah variabel belakang.
Fungsi getPanjang() diatas digunakan untuk mencari panjang dari teks yang dimasukkan sebagai parameter. Kenapa tidak saya sertakan sebagai parameter pada fungsi rekursinya? Karena hal itu akan sangat merepotkan. Input string dari fungsi rekursi berasal dari suatu cell dalam excel yang diambil lewat macro, jadi mencari panjang stringnya tidak bisa dicari secara langsung. Dibawah ini sourcecode dari fungsi getPanjang().
Function getPanjang(ByVal strTxt As String) As Integer
Dim temp As String
Dim i As Integer
i = 1
Do
temp = Mid(strTxt, i, 1)
i = i + 1
Loop Until temp = “”
getPanjang = i – 2
End Function
Referensi : Pengalaman Penulis