Langkah selanjutnya kita ingin membuat pemisah ribuan dan 2 angka dibelakang koma dengan tetap menjaga nilai yang ada di textbox tetap berupa numerik.
(catatan: format international 1,000.00)
Tambahkan 1 control lagi untuk mendemonstrasikan event lost focus.
Code berikut untuk mengisi nilai Text1, agar nilai nya berupa karakter numerik.
Private Sub Form_Load()
Text1.Text = 0
Text1.Text = Format(Text1.Text, "#,##0.#0")
Text1.SelStart = Len(Text1.Text)
End Sub
Code berikut untuk mengubah format numerik saat event lost focus (kehilangan fokus)
Private Sub Text1_LostFocus()
Text1.Text = Format(Text1.Text, "#,##0.#0")
Text1.SelStart = Len(Text1.Text)
End Sub
Code berikut untuk memastikan input nilai numerik (double) saat event got focus (mendapatkan fokus)
Private Sub Text1_GotFocus()
Text1.Text = CDbl(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End Sub
Code berikut untuk memastikan perubahan data selalu bernilai numerik, terutama jika data tidak diinput dengan mengetik, misal: copy paste.
Private Sub Text1_Change()
If Not IsNumeric(Text1.Text) Then
Text1.Text = 0
Text1.SelStart = Len(Text1.Text)
Exit Sub
End If
End Sub
That's all for today, semoga bermanfaat.
Click here if you like this article.
51 Comments
Berikut contoh codenya:
Private Sub cmdSave_Click()
Dim dblNilai As Double
dblNilai = CDbl(Text1.Text)
'gunakan dblNilai untuk proses input
End Sub
saya mau taya ni kenapaya disaat text yang berformat apabila kita jumlahkan (text1 + text2) itu hasilnya tidak sempurna,contoh:
Private Sub Text5_Change()
If Text3 <> "" Then
x = Text4
Text3.Text = Format(Text3.Text, "###,##0")
Text3.SelStart = Len(Text3.Text)
X = Format(Text1.Text, "###,##0") + Format(Text2.Text, "###,##0")
Text4 = X
Text4.Text = Format(Text4.Text, "###,##0")
End If
End Sub
jika nila dari text1 = 3,500 dan text2= 4,000 maka hasilnya akan seperti ini = 35,004,000 seharus nya jadi 6,500 tolong solusinya bu apa ada yang kurang dengan koding saya...
jadi klo mau dipakai penjumlahan dikonversi ke tipe data numerik misal nya tipe data double. untuk menampilkan baru diformat ulang.
Private Sub Text5_Change()
If Text3 <> "" Then
x = Text4
Text3.Text = Format(Text3.Text, "###,##0")
Text3.SelStart = Len(Text3.Text)
X = cdbl(Text1.Text) + cdbl(Text2.Text) 'Aku ngubah disini
Text4 = X
Text4.Text = Format(Text4.Text, "###,##0")
End If
End Sub
mungkin ini bisa jadi referensi:
http://rani-irsan.blogspot.com/2014/07/vb6-penggabungan-string.html
http://rani-irsan.blogspot.com/2014/07/vb6-fungsi-konversi-tipe-data.html
o ya kalo koding yang saya gunakan itu kalo untuk pengurangan gak masalah normal tapi kalo untuk penjumlahan kok laen ya emang cara kerja kurang sama tambah itu beda ya??
karena selain untuk penjumlahan tanda + juga dipakai concatenation pada tipe data string
Contoh:
Format(Text1.Text, "Rp #,###")
Format(Text1.Text, "#,###")
dengan
Format(Text1.Text, "###,##0")
yang mana yang benar?
klo yang diakhiri dengan "#" saat text bernilai 0 tampilannya akan kosong
sementara klo diakhiri dengan "0" saat text bernilai 0, textbox akan menampilkan angka 0
saya mau textbox yg saya buat setiap diketik angka langsung berubah,
misal saya ketik 6500 maka otomatis textbox berubah menjadi 6,000.00,
jadi setiap diketik dia brubah otomatis.
bagaimana ya bu?
@heru: 6500 jadi 6000? beda 500? :D
klo format pengen berubah langsung pas setiap ketik berarti pindahin kode yang ada di event Text1_LostFocus() ke Text1_Change()
@hijram: mesti di cek code nya kenapa bisa gitu.
codingnya panjang apa ya di share, di sini mbak?
Private Sub Text1_GotFocus()
Text1.Text = CDbl(Text1.Text)
Text1.SelStart = Len(Text1.Text)
End Sub
sudah ditambahkan?
dan klo angka di depan koma dihapus format numerik nya tidak valid lagi, jadi ya error.
jadi saya dapet tugas buat tanda operasi koma setelah saya bisa tp saya ada trouble dan ada tugas lagi
gimana cara agar input koma dalam kalkulator cukup sekali contoh misal
saya sudah input 0.12 tapi ketika saya klik koma masih bisa keinput 0.12.
bagaiman caranya ilangin input yang kedua koma tersebut
If TombolOperasiSudahDitekan = 0 Then
If display.Text = 0 Then
display.Text = 0
Else
AngkaDigitPertama = 1
display.Text = display.Text & "."
End If
If AngkaDigitPertama = 0 Then display.Text = display.Text & "."
Else
If display2.Text = 0 Then
display2.Text = 0
Else
AngkaDigitPertama = 1
display2.Text = display.Text & "."
End If
If AngkaDigitPertama = 0 Then display2.Text = display2.Text & "."
End If
End Sub
ini codeing yang saya buat apakah ada tambahan buat ngilangin input koma yang kedua
http://rani-irsan.blogspot.co.id/2013/02/vb6-input-numeric-only.html
pada event textbox keypress
Case 46
If InStr(Text1.Text, ".") <> 0 Then KeyAscii = 0
bagian tersebut untuk mencegah 2 koma (yg dalam program berupa titik <.>) untuk diinputkan ke dalam textbox
Private Sub TombolKoma_Click()
If TombolOperasiSudahDitekan = 0 Then
If display.Text = 0 Then
display.Text = 0
Else
AngkaDigitPertama = 1
display.Text = display.Text & "."
If InStr(display.Text, ".") <> 0 Then KeyAscii = 0
End If
If AngkaDigitPertama = 0 Then display.Text = display.Text & "."
Else
If display2.Text = 0 Then
display2.Text = 0
Else
AngkaDigitPertama = 1
display2.Text = display.Text & "."
End If
If AngkaDigitPertama = 0 Then display2.Text = display2.Text & "."
bneran binggung ?
trs di generalnya perlu ditambahkan atau enggak ?
http://rani-irsan.blogspot.co.id/2014/07/vb6-pengunaan-event-property-method.html
trus tentang jurusan kuliah no worries kayak nya, saya juga teknik industri koq ^_^
bukan informatika ato komputer
soalnya kadang kami sekelas itu binggung soal bahasa pemograman ini.
kl misalnya saya ganti keypress itu ngubah pemograman yang lain tidak
yang harus dipastiin pertama code VB disini pakai regional english USA dimana koma sebagai titik dan titik sebagai koma. misalkan sepuluh ribu koma dua lima maka ditulis 10,000.25.
klo kmu gimana?
Dan misal 25.550 : 1.000 = 25,55
Menggunakan 3 textbox ( txtnilai1, txtnilai2, txthasil) terimakasih sebelumnya.
Tri.joko3838@gmail.com
seperti yang dijelaskan di artikel jika ingin menampilkan format nomor dengan fungsi format.
Text1.Text = Format(Text1.Text, "#,##0.#0")
Tetapi format seperti diatas berpotensi error jika digunakan untuk perhitungan matematis jadi sebelum masuk ke rumus dikonversi dulu aja.
Contoh:
Text3.Text = CDbl(Text1.Text) * CDbl(Text3.Text)
@rikky mahesa: comment aja di artikel yang bersangkutan klo ada pertanyaan.
Saya sedang buat aplikasi price list ongkos kirim barang yang harganya tergantung berat barang,
Ada 4 kelas harga, 1-10, 11-50, 51-99 dan 》 99.
Aplikasi berjalan normal kecuali kenapa ya pas input harga untuk 208 selalu dibaca seperti angka 20. Jadi aplikasi hanya akurat sampai 109, selebihnya hanya dibaca 2 digit pertama, mohon bantuannya
@Agus Sudaryanto: Tidak sesuainya gimana saya belum ada gambaran klo ga lihat code nya.
Untuk @Indra & @Agus, perlu diingat format numerik decimal yang dipakai di VB english USA.
Jadi penggunaan koma itu pakai titik 1/2 = 0.5
Sebaliknya pemisah angka ribuan memakai koma 1000 -> 1,000
Semoga bisa jadi sedikit pencerahan. Happy coding!
Private Sub Command1_Click()
Text1.Text = Format(Text1.Text, "Rp ###,##0")
Text3.Text = CDbl(Text1.Text) + CDbl(Text2.Text)
End Sub
mohon bantuannya saya salah dimananya?
Text3.Text = CDbl(Replace(Text1.Text, "Rp ", "")) + CDbl(Text2.Text)
Text2.Text juga harus diperlakukan sama pakai replace klo memuat "Rp "