這與Access本身無關。在任何VBA中,如果文本被SPACE
,HYPHEN
或DASH
分隔,格式函數的行爲將如此。因此,這
Debug.Print Format("093 0005", "0000000000000")
Debug.Print Format("093/0005", "0000000000000")
Debug.Print Format("093-0005", "0000000000000")
將返回0000000034090
它會嘗試將其轉換爲日期或數量,如果它是一個有效的日期或數字,然後它會告訴你它的數值等同於。如果它不是一個相當的日期或數字,那麼它將保持原樣。我相信原因是Format
函數無法確定值的「格式」並將其作爲字符串。這與說Format("Blah", "0000000000000")
相似。這是顯而易見的,你不會指望Format
函數將其格式化爲000000000blah
。
不幸的是我找不到MS知識庫中的任何文章,它解釋了爲什麼Format函數的行爲如此。
我過去發現解決它的唯一方法是使用VAL
函數將其轉換爲數字。所以
Debug.Print Format(Val("093 0005"), "0000000000000")
會給你想要的結果0000000930005
然而,如果數由一個HYPHEN
或DASH
分開那麼VAL
功能是沒用的。爲此,您必須使用REPLACE
替換HYPHEN
或DASH
與SPACE
。不過,我懷疑你會格式化數字有HYPHEN
或DASH
。
感謝您的澄清。我想我很驚訝的是,該功能將數字解釋爲日期,當請求的格式不是日期樣。你的解決方案在我的情況下工作。我也可以使用:De – 2012-08-04 11:28:09
Rick當你在即時窗口中輸入'?格式(Val(「093 0005」),「0000000000000」)'你會得到什麼? – 2012-08-04 16:02:54
我得到0000000930005 – 2012-08-05 17:36:48