標題:
[發問]
請問....如何利用VBA判定通用格式中小數位數為幾位(以格式顯示)
[打印本頁]
作者:
棋語鳥鳴
時間:
2013-7-18 19:08
標題:
請問....如何利用VBA判定通用格式中小數位數為幾位(以格式顯示)
本帖最後由 棋語鳥鳴 於 2013-7-18 19:10 編輯
假設:A欄格式為通用格式,想判定其小數位數格式於B欄
例如:
A1:數值為0.0001 B1自動判定A1格式為"0.0000"
A2:數值為0.01 B2自動判定A2格式為"0.00"
A3:數值為0.1 B3自動判定A3格式為"0.0"
類似這樣,請問用VBA如何判定A欄的小數位數字至第幾位
作者:
GBKEE
時間:
2013-7-18 19:41
回復
1#
棋語鳥鳴
是這樣嗎
Option Explicit
Sub Ex()
Dim E As Range, i As Integer
For Each E In Range("A:A").SpecialCells(xlCellTypeConstants, xlNumbers)
i = InStr(E, ".")
If i > 0 Then
i = Len(Mid(E, i + 1))
E.NumberFormatLocal = "0." & String(i, "0") & "_ "
Else
E.NumberFormatLocal = "G/通用格式"
End If
Next
End Sub
複製代碼
作者:
棋語鳥鳴
時間:
2013-7-22 18:50
回復
2#
GBKEE
我想要的是將格式設在b欄
例如:a1是0.0002 b1是0.1
執行之後b1則變成0.1000(參考a1,b1自動改格式與a1的小數位數一樣)
意思就是把現有的語法(目前是a欄直接變數值),格式由a欄改到b欄,要如何改
作者:
luhpro
時間:
2013-7-22 22:43
回復
3#
棋語鳥鳴
只要在 E 的後面加上 .Offset(0, 1) <即標的儲存格右移一欄 = B欄> 就好了:
Option Explicit
Sub Ex()
Dim E As Range, i As Integer
For Each E In Range("A:A").SpecialCells(xlCellTypeConstants, xlNumbers)
i = InStr(E, ".")
If i > 0 Then
i = Len(Mid(E, i + 1))
E.Offset(0, 1).NumberFormatLocal = "0." & String(i, "0") & "_ "
Else
E.Offset(0, 1).NumberFormatLocal = "G/通用格式"
End If
Next
End Sub
複製代碼
作者:
棋語鳥鳴
時間:
2013-7-23 21:20
回復
4#
luhpro
原來如此還能用"Offset"這招,看來我要多學學Offset的函數和語法...感覺還不錯用!
感謝兩位大大的教學....
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)