2011-03-31 23 views
3

我想創建一個函數,將參數作爲參數Cell並返回Integer。如果轉換不成功,它應該簡單地返回0,而不會向用戶拋出錯誤消息。如何在VBA for Excel中將任何單元格轉換爲整數?

我不關心包含浮點值的單元格,它們也可以返回0,因爲它看起來不像整數。但是,像000文本值應該返回123412 34應該返回0

+0

你想如何轉換工作?例如,你想從3.14得到什麼結果?那麼像0x03這樣的十六進制字符串呢? – 2011-03-31 12:55:32

+0

@ Jean-François是的,我嘗試過,我有很多方法可以避免這種情況..我只是想以正確的方式解決這個問題。 – Lipis 2011-03-31 13:38:18

回答

9

如何:

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

這很簡單,只是爲了讓你開始。 – Oneide 2011-03-31 13:02:14

+0

簡單但功能。 =] – 2011-03-31 13:04:39

+0

值超過32768的值是什麼? – Lipis 2011-03-31 13:18:58

2

如果要求無論返回輸入字符串的長度的整數倍,你可以格式化你的電池有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 
+0

現在你可能想編輯你的答案,以避免任何種類的無限遞歸:) – Lipis 2011-04-01 11:04:10

相關問題