如何将 integer 值"45"转换为Excel VBA中的 string 值"45"?
CStr(45) 就是你所需要的(转换字符串函数)
CStr(45)
尝试CStr()函数
Dim myVal as String; Dim myNum as Integer; myVal = "My number is:" myVal = myVal & CStr(myNum);
大多数时候,你不需要"convert"; VBA将为您执行安全的隐式类型转换,而无需使用像 CStr 这样的转换器 .
CStr
下面的代码没有任何问题,因为变量是String类型,并且 implicit type conversion is done for you automatically!
Dim myVal As String Dim myNum As Integer myVal = "My number is: " myVal = myVal & myNum
结果:
“我的号码是:0”
你甚至不需要那种幻想,这也有效:
Dim myString as String myString = 77
“77”
The only time you WILL need to convert is when the variable Type is ambiguous (例如,Type Variant,或Cell的 Value (Variant)) .
Value
即使这样,如果你正在使用另一个String变量或常量,你也不必使用 CStr 函数 . 像这样:
Sheet1.Range("A1").Value = "My favorite number is " & 7
“我最喜欢的号码是7”
所以,实际上,唯一罕见的情况是当你真的想要将一个整数值存储到一个变量或Cell值时,如果还没有与另一个字符串复合(这是一个非常罕见的情况,我可能会添加):
Dim i as Integer i = 7 Sheet1.Range("A1").Value = i
7
Dim i as Integer i = 7 Sheet1.Range("A1").Value = CStr(i)
“7”
在我的例子中,找不到函数CString . 但是在值中添加一个空字符串也可以 .
Dim Test As Integer, Test2 As Variant Test = 10 Test2 = Test & "" //Test2 is now "10" not 10
如果您输入的字符串恰好是十六进制数字(例如E01),那么即使您使用CStr函数,Excel也会将其转换为0,即使您首先将其存储在String变量类型中也是如此 . 解决问题的一种方法是将'追加'到 Value 的开头 .
例如,从Word表中提取值并将它们带到Excel时:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
没有声明变量的最短路径是类型提示:
s$ = 123 ' s = "123" i% = "123" ' i = 123
这不会用 Option Explicit 编译 . 类型不会 Variant 但 String 和 Integer
Option Explicit
Variant
String
Integer
另一种方法是将数值的两个已解析部分拼接在一起:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
我发现这比 CStr() 更好,因为 CStr() 似乎不会转换来自我体验变体的十进制数字 .
CStr()
7 回答
CStr(45)
就是你所需要的(转换字符串函数)尝试CStr()函数
大多数时候,你不需要"convert"; VBA将为您执行安全的隐式类型转换,而无需使用像
CStr
这样的转换器 .下面的代码没有任何问题,因为变量是String类型,并且 implicit type conversion is done for you automatically!
结果:
你甚至不需要那种幻想,这也有效:
The only time you WILL need to convert is when the variable Type is ambiguous (例如,Type Variant,或Cell的
Value
(Variant)) .即使这样,如果你正在使用另一个String变量或常量,你也不必使用
CStr
函数 . 像这样:所以,实际上,唯一罕见的情况是当你真的想要将一个整数值存储到一个变量或Cell值时,如果还没有与另一个字符串复合(这是一个非常罕见的情况,我可能会添加):
在我的例子中,找不到函数CString . 但是在值中添加一个空字符串也可以 .
如果您输入的字符串恰好是十六进制数字(例如E01),那么即使您使用CStr函数,Excel也会将其转换为0,即使您首先将其存储在String变量类型中也是如此 . 解决问题的一种方法是将'追加'到 Value 的开头 .
例如,从Word表中提取值并将它们带到Excel时:
没有声明变量的最短路径是类型提示:
这不会用
Option Explicit
编译 . 类型不会Variant
但String
和Integer
另一种方法是将数值的两个已解析部分拼接在一起:
我发现这比
CStr()
更好,因为CStr()
似乎不会转换来自我体验变体的十进制数字 .