在我的代码中,我使用 len() 函数来获取分配给变量的数据内容的长度。在这里我发现了一些奇怪的行为 - 但首先查看我的代码,然后查看我的注释/问题。
Dim Array(1 To 3) As Integer
' some code
Array(1)=345
' some code
If len(Array(1)) = 3 Then
' do this (here is the expected code bunch)
Else
' do this (and here the unexpected code bunch)
End If
Run Code Online (Sandbox Code Playgroud)
谷歌引导我找到了MS len() 函数 ,在这里我用“或”读到了第一句话,(对我来说)没有进一步的解释,这让我有点困惑......
(Len 函数)返回一个 Long,其中包含字符串中的字符数或存储变量所需的字节数。
在第二个谷歌推荐的网站上 ,我发现了非常有用的提示:
好的,但是如果变量是整数,我怎样才能获得数据内容的长度 - 就像我的代码片段中一样?
在这里,我在这些链接(Link_1,
Link_2TEXT() )中找到了使用and进行转换的建议CStr()- 第二个链接推荐CStr()了由于TEXT().
现在我的问题:
CStr()这是解决我的问题的正确方法吗?
另一方面,由于我的研究,出现了一个额外的问题:如何从声明为字符串或变体的变量中获取已使用的字节数?
非常感谢您提前的帮助!
当您使用Len字符串时,它会给出该字符串的长度。在立即窗口中输入:
? Len("123")
3
? Len("ABCDE")
5
Run Code Online (Sandbox Code Playgroud)
请注意,有一些字符存储为 2 个字节,请参阅/sf/answers/3879323101/,所以准确地说,Len将返回该字符串所需的字节数。
当您使用Len非字符串变量(您的数组包含整数)时,它将返回该变量使用的字节数。一个整数需要 2 个字节(好吧,从技术上讲,现在它使用 4 个字节,但这是一个不同的故事)。Long 将返回 4,Double 8 -无论这些变量中存储什么值。
您似乎想检查该数字是否包含 3 位数字:要么将数字转换CStr为字符串:
If Len(CStr(Array(1))) = 3 Then
Run Code Online (Sandbox Code Playgroud)
或者(对我来说似乎更合理),直接检查值
If Array(1) >= 100 And Array(1) <= 999 Then
Run Code Online (Sandbox Code Playgroud)