Answers:
CStr(45)
就是您所需要的(“转换字符串”功能)
CStr(CDbl(***))
7
成为007
。您可能还需要指定小数位数或包含千位分隔符。如果这些细节对您很重要:excelfunctions.net/vba-format-function.html
大多数时候,您无需“转换”;VBA将为您执行安全的隐式类型转换,而无需使用 CStr
。
下面的代码可以正常工作,因为变量是Type String,并且隐式类型转换自动为您完成!
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
结果:
“我的电话是:0”
您甚至不必花哨,这也可以:
Dim myString as String
myString = 77
“ 77”
您将需要转换的唯一时间是当变量类型是不明确的(例如,类型变体或细胞的Value
(这是变))。
即使这样,CStr
如果要与另一个String变量或常量复合,也不必使用function。像这样:
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”
Option Base 1
,基于隐式1的数组,具有Def[Type]
(男孩就是EVIL!您知道了-VBA中唯一好的隐式功能是使显式Call
过时的隐式调用语法。
就我而言,找不到函数CString。但是,向该值添加一个空字符串也可以。
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
CString
,这是VB.NET功能。连接一个空的字符串文字以组成一个字符串是一种非常la脚的转换方法。使用CStr
显式类型转换-这是一个隐式类型转换,并提出任何阅读代码的眉毛。对不起,我在发布此答案后发现了这么晚,希望我早些时候可以否决它。
Sub NumToText(ByRef sRng As String, Optional ByVal WS As Worksheet)
'---Converting visible range form Numbers to Text
Dim Temp As Double
Dim vRng As Range
Dim Cel As Object
If WS Is Nothing Then Set WS = ActiveSheet
Set vRng = WS.Range(sRng).SpecialCells(xlCellTypeVisible)
For Each Cel In vRng
If Not IsEmpty(Cel.Value) And IsNumeric(Cel.Value) Then
Temp = Cel.Value
Cel.ClearContents
Cel.NumberFormat = "@"
Cel.Value = CStr(Temp)
End If
Next Cel
End Sub
Sub Macro1()
Call NumToText("A2:A100", ActiveSheet)
End Sub
CStr(45)
,确切地说。