Masuk dengan Microsoft
Masuk atau buat akun.
Halo,
Pilih akun lain.
Anda memiliki beberapa akun
Pilih akun yang ingin Anda gunakan untuk masuk.

Konten TechKnowledge

Pertanyaan: Kode VBA telah ditulis yang membandingkan dua nilai mata uang. Diperlihatkan di bawah ini adalah contoh kode ini:

If ccur(cost) > ccur(1000) then

Saat baris kode ini dijalankan, menyebabkan ketidakcocokan tipe data atau pesan kesalahan tipe ketidakcocokan tipe. The Windows Currency settings are currently defined as English "pounds" symbol for the currency symbol. Jika saya mengubah simbol mata uang ke "$", kode akan berjalan dengan sukses. Apa yang terjadi di sini dan apakah ada cara untuk mengatasi masalah ini?


Jawaban: Di VBA, fungsi Ccur() selalu menghargai pengaturan mata uang Panel Kontrol ketika mengevaluasi bidang ini. Karena terapkan Dynamics VBA akan selalu melewati nilai bidangnya sebagai string, Anda akan mengalami masalah ini setiap kali nilai mata uang dievaluasi yang tidak cocok dengan pengaturan mata uang di Windows.


Dalam file bantuan VBA, ini menunjukkan bahwa fungsi konversi tipe data harus digunakan, bukan Val untuk memberikan penilaian secara internasional tentang konversi dari satu tipe data ke tipe data lain. Misalnya, ketika Anda menggunakan fungsi CCur(), pemisah desimal berbeda, pemisah ribuan berbeda, dan berbagai opsi mata uang dapat dikenali dengan benar, tergantung pada pengaturan lokal komputer Anda.


Di bawah pemahaman ini, perhatikan hal ini tentang bekerja dengan Microsoft Dynamics GP:

  • CCur("œ1000") akan sama dengan ketidakcocokan tipe (misalnya string ini bukan mata uang yang valid) jika pengaturan Mata Uang Windows tidak diatur ke "pound".

  • Jika diatur ke "pound" maka CCur("œ1000") akan mengembalikan nilai 1000, tetapi kemudian CCur("$1000") akan sama dengan kesalahan ketidakcocokan tipe.

Cara terbaik untuk menangani mata uang dari VBA adalah dengan menulis fungsi yang akan mengonversi string apa pun dengan simbol non-numerik di depan ke nilai numerik (atau mata uang). Misalnya, seperti ini:

If CurrencyValueFromDynField(cost) > ccur(1000) then

di mana fungsi yang bernama CurrencyValueFromDynField ditetapkan sebagai berikut. Kode ini dengan benar menangani angka negatif yang telah dilanjutkan atau di belakang tanda minus, yang dia dikelilingi oleh tanda kurung siku, atau yang memiliki spasi antara simbol mata uang dan angka.

Public Function CurrencyValueFromDynField(FieldString As String) As Currency
Dim i As Integer
Dim TempChar, TempString As String

' Strip off all non-numeric characters
TempString = ""
For i = 1 To Len(FieldString)
TempChar = Mid(FieldString, i, 1)
If InStr("1234567890.,-()", TempChar) > 0 Then
TempString = TempString & TempChar
End If
Next
FieldString = TempString

' Return the numeric value of the string (as a currency data type )
CurrencyValueFromDynField = CCur(FieldString)
End Function

Artikel ini adalah TECHKnowledge Document ID:10036

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.

Apakah informasi ini berguna?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?
Dengan menekan kirim, umpan balik Anda akan digunakan untuk meningkatkan produk dan layanan Microsoft. Admin TI Anda akan dapat mengumpulkan data ini. Pernyataan Privasi.

Terima kasih atas umpan balik Anda!

×