Pages

Jumat, 06 Juni 2014

Cara Memformat Angka pada VB6

Berikut ini adalah cara memformat angka menjadi style Indonesia, yaitu antara  kelipatan ribuan dipisahkan dengan karakter titik, dan menambahkan dua digit bilangan nol di belakang koma. Jika Regional Setting di PC menggunakan setting US atau English atau default Internasional, maka jika menggunakan fungsi Format(50000, "#,#") atau jika menggunakan fungsi FormatNumber(50000, 2) hasilnya bisa menjadi:

50,000.00 atau jika setting PC Indonesia maka menjadi 50.000,00.
Fungsi buatan di bawah ini mengubahnya secara fix menjadi setting Indonesia, yaitu: 50.000,00 dan tidak terpengaruh dengan Regional Settings, apakah Internasional atau setting Indonesia di visual basic 6, untuk mempraktekannya siapkan :
1. Buat 1 Project baru dengan 1 Form, 1 Commandbutton, dan 1 TextBox
2. Copy-kan coding berikut ke dalam editor form yang bertalian.

          'Masukkan bilangan di Text1, lalu tekan Enter untuk

          'menampilkan angka dalam format Indonesia
          Private Sub Command1_Click()
            MsgBox FormatAngka(Text1.Text)
            Text1.SetFocus

            SendKeys "{Home}+{End}"
          End Sub

          Private Sub Text1_KeyPress(KeyAscii As Integer)

            Command1.Default = True
          End Sub

          'Parameter Angka bertipe Variant, untuk mengatasi
          'apakah input dalam tipe data apapun

          Public Function FormatAngka(Angka) As String

          'Variabel yang digunakan di fungsi
          Dim Jumlah As Integer, Jumlah1 As Integer

          Dim i As Integer, j As Integer, k As Integer
          Dim strAngka As String, strAngka1 As String
          Dim strAngkaFull As String
          Dim strTemp As String, strTemp1 As String

            
             'Tampung nilai angka ke dalam variabel string
             strAngka = CStr(Trim(Angka))
            
             'Karena parameternya bertipe angka bulat, maka tidak boleh

             'ada karakter lainnya (termasuk titik dan koma)
             'selain karakter angka saja...
             If InStr(1, strAngka, ".") > 0 Or _
                InStr(1, strAngka, ",") > 0 Or _

                Not IsNumeric(Angka) Then
                MsgBox "Harus bilangan bulat dan tidak" & vbCrLf & _
                       "boleh mengandung karakter" & vbCrLf & _
                       "titik atau koma.", _

                       vbCritical, "Bukan Bilangan Bulat"
                Exit Function
             End If
            
             'Tambahkan dua angka nol di belakang string strAngka

             strAngkaFull = strAngka & "00"
               
             'Tampung jumlah digit
             Jumlah = Len(Trim(strAngkaFull))

             'Inisialisasi untuk counter menghitung per karakter

             j = 0
             strTemp = ""
            
             'Ulangi setiap karakter mulai dari kanan ke kiri
             For i = Jumlah To 1 Step -1  'Step -1 = berkurang 1            
                j = j + 1   'Counter untuk semua karakter
                k = k + 1   'Counter untuk letak tanda titik
               
                'Tampung setiap satu karakter ke strTemp
                strTemp = strTemp & Mid(strAngkaFull, i, 1)
               
                'Jika counter = 2 (untuk letak tanda koma desimal)

                If j = 2 Then
                  
                   'Tambahkan karakter koma
                   strTemp = strTemp & ","
                  
                   'Inisialisasi kembali counter untuk titik
                   k = 0
                End If
               
                'Jika counter utk titik = 3 dan
                'belum mencapai digit akhir paling kiri (awal).
                'Hal ini untuk menghindari karakter titik di akhir...
                If k = 3 And i <> 1 Then

                   'Tambahkan karakter titik
                   strTemp = strTemp & "."
                  
                   'Inisialisasi kembali counter untuk

                   'menentukan posisi titik
                   k = 0
                  
                End If

             Next i  'Maju ke karakter berikutnya
            
             'Tampung jumlah karakter strTemp yang berasal
             'dari iterasi di atas ini

             Jumlah1 = Len(Trim(strTemp))
            
             'Iterasi berikut untuk membalikkan posisi bilangan
             For i = Jumlah1 To 1 Step -1
                strTemp1 = strTemp1 & Mid(strTemp, i, 1)
             Next i
            
             'Kembalikan nilai string yg fix ke fungsi FormatAngka
             FormatAngka = strTemp1
          End Function