如何在VBA for Excel中将任何单元格转换为整数?
问题描述:
我想创建一个函数,将参数作为参数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
+0
现在你可能想编辑你的答案,以避免任何种类的无限递归:) – 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