VBA“左” - 函数为整数

时间:2016-07-12 09:32:39

标签: vba

在VBA中玩“左”功能并注意到结果存储为字符串。例如:

Left(ws2.range("C2").value,3) 

其中ws2是某些工作表,而c2是ws2中的某个单元格,包含1234.

左边的函数将返回“123”,但它将被格式化为字符串。当我尝试使用此字符串访问目录键时,这反过来会导致错误(这是不可能的)。我找到了一个解决方法:

dim tag as integer
tag = Left(ws2.range("C2").value,3) 

这会导致值为123的标记存储为整数,然后我可以用它来访问目录。

但是我想知道是否可以修改“left”函数以将值作为整数返回?或任何其他格式(长,变体,范围,等等)

请注意,我已经找到了解决方案,但我认为它可能对其他人和/或有趣的讨论有所帮助。

5 个答案:

答案 0 :(得分:0)

为此,最简单的方法是使用Cint()功能。无需修改功能,您可以随时创建自己的功能。

答案 1 :(得分:0)

执行此操作的正确方法是使用Cint()函数将表达式转换为整数。

有关详细信息,请参阅https://msdn.microsoft.com/en-us/library/fctcwhw9(v=vs.84).aspx

答案 2 :(得分:0)

以下是一些转换函数:

CInt() 'convert to integer
CLng() 'convert to long (long is preferred over integer since integer only has 2 bytes in VBA)
CDbl() 'convert to double
CDec() 'convert to decimal (variable has to be declared as variant)

答案 3 :(得分:0)

回答:)

cint(left(ws2.range("C2").value,3))会“更好”,因为您仍然依靠VBA为您进行转换,如果您实际上需要使用长的可能,还要先检查输出。首先检查输入字符串是数字也是一个很好的检查。

答案 4 :(得分:0)

使用cint

function IntLeft(byval value as string, byval length as integer) as Integer
   IntLeft=0 'default if non numeric
   if isnumeric(value) then
      IntLeft=cint(left(value,length))
   end if
end function

使用int

function IntLeft(byval value as string, byval length as integer) as Integer   
   IntLeft=int(left(value,length))   'int returns the first numbers as an int, 0 if no numbers
end function