請問vb從excel單元格讀出的數字,如何始終保留兩位小數?


excel文件中E3單元格的內容為:“1000.30”
excel中已經設定此單元格格式為數值型,保留兩位小數
但是通過vb代碼:
xlSheet.Range("E3")
讀出的數字就變成了1000.3

最終要放入一個Currency型的變量中,

dim tmp as Currency
tmp = xlSheet.Range("E3")

tmp值仍為1000.3


我想要的是讀出后賦予tmp時,值為1000.30,如果是整數,也保留小數點后的兩位,例如1000.00
請問怎么寫?

8 个解决方案

#1


tmp =format(xlSheet.Range("E3"),"0.00")

#2


要格式化
tmp =format(xlSheet.Range("E3"),"0.00") 

#3


數值是固定的,顯示格式是隨意的,兩者不能混為一談。

比如你手中捏着一把錢(值),無論用下面的何種方式稱呼(顯示格式),都不會對錢產生影響
1000.3
一千塊零三毛
壹仟圓叄角整

#4


照1樓這樣寫,顯示錯誤“13:類型不匹配”

#5


tmp =CCur(format(xlSheet.Range("E3"),"0.00") )
要轉類型。

#6


哦,剛才的錯誤是我的問題,不是1樓的代碼有問題。

按照3樓的意思,
tmp =format(xlSheet.Range("E3"),"0.00")
並不能讓tmp的值為1000.30
但可以在顯示的時候
txtField.text = format(tmp,"0.00")
顯示為1000.30

不知道我理解的對不對?

#7


要用串變量才能保持有小數末尾的0
Dim tmp As String
tmp = FormatNumber(xlSheet.Range("E3"), 2, vbTrue, vbTrue)

#8


引用 7 樓 chinaboyzyq 的回復:
要用串變量才能保持有小數末尾的0
Dim tmp As String
tmp = FormatNumber(xlSheet.Range("E3"), 2, vbTrue, vbTrue)

如上,1000.30和1000.3都是顯示結果,雖然Currency類型的實際內容1000.30,但VB默認顯示時會省略掉最后一個0顯示為1000.3,要想顯示為1000.30,可以使用Format、FormatNumber、FormatCurrency等函數。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com