我想創建一個函數,將參數作爲參數Cell
並返回Integer
。如果轉換不成功,它應該簡單地返回0,而不會向用戶拋出錯誤消息。如何在VBA for Excel中將任何單元格轉換爲整數?
我不關心包含浮點值的單元格,它們也可以返回0,因爲它看起來不像整數。但是,像000
文本值應該返回1234
和12 34
應該返回0
我想創建一個函數,將參數作爲參數Cell
並返回Integer
。如果轉換不成功,它應該簡單地返回0,而不會向用戶拋出錯誤消息。如何在VBA for Excel中將任何單元格轉換爲整數?
我不關心包含浮點值的單元格,它們也可以返回0,因爲它看起來不像整數。但是,像000
文本值應該返回1234
和12 34
應該返回0
如何:
Option Explicit
Public Function ConvertToInteger(Cell As Range) As Integer
On Error GoTo NOT_AN_INTEGER
ConvertToInteger = CInt(Cell.Value)
Exit Function
NOT_AN_INTEGER:
ConvertToInteger = 0
End Function
注意,例如,5.6的值將返回6,雖然。如果你想要它爲0,你必須檢查它並做相應的處理。
如果要求無論返回輸入字符串的長度的整數倍,你可以格式化你的電池有0位小數,並完成類似下面,這將自動提升數據類型的精度要求。否則,如果你真的只想要一個VBA整數,你將不得不截斷輸入值。
Public Function ConvertToIntegral(Cell As Range) As Variant
On Error GoTo catch
Dim result As Variant
result = Val(Cell.Value)
ConvertToIntegral = result
Exit Function
catch:
ConvertToIntegral = 0
End Function
現在你可能想編輯你的答案,以避免任何種類的無限遞歸:) – Lipis 2011-04-01 11:04:10
你想如何轉換工作?例如,你想從3.14得到什麼結果?那麼像0x03這樣的十六進制字符串呢? – 2011-03-31 12:55:32
@ Jean-François是的,我嘗試過,我有很多方法可以避免這種情況..我只是想以正確的方式解決這個問題。 – Lipis 2011-03-31 13:38:18