如何在VBA for Excel中将任何单元格转换为整数?

问题描述:

我想创建一个函数,将参数作为参数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

如何:

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

如果要求无论返回输入字符串的长度的整数倍,你可以格式化你的电池有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