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

Tags: ,
  • http://persada.web.ugm.ac.id tjumie

    Hmm.. nice post!
    btw, kok g tau panjangnya kie maksude piye? bukane ada function getPanjang yang sampeyan buat kan?

  • admin

    ya makanya tak buat fungsi itu biar bisa nyari panjangnya…hehe..

  • http://putravb.blogspot.com Putra VB

    Kenapa harus membuat funsi getPanjang untuk menghitung karakter, kan ada fungsi string “Len()”.

    Trus untuk memberikan dot, bukannya bisa dengan fungsi “FormatNumber()”.

    ???

    • http://canggih.web.id admin

      jika ditampilkan di cell excellnya mungkin bisa tapi aku tampilkan di textbox form vba tu gak bisa….makanya pake cara lain