首页 文章

如何在Excel VBA中将整数转换为字符串?

提问于
浏览
144

如何将 integer 值"45"转换为Excel VBA中的 string 值"45"?

7 回答

  • 218

    CStr(45) 就是你所需要的(转换字符串函数)

  • 2

    尝试CStr()函数

    Dim myVal as String;
    Dim myNum as Integer;
    
    myVal = "My number is:"
    myVal = myVal & CStr(myNum);
    
  • 45

    大多数时候,你不需要"convert"; VBA将为您执行安全的隐式类型转换,而无需使用像 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)) .

    即使这样,如果你正在使用另一个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”

  • 95

    在我的例子中,找不到函数CString . 但是在值中添加一个空字符串也可以 .

    Dim Test As Integer, Test2 As Variant
    Test = 10
    Test2 = Test & ""
    //Test2 is now "10" not 10
    
  • 1

    如果您输入的字符串恰好是十六进制数字(例如E01),那么即使您使用CStr函数,Excel也会将其转换为0,即使您首先将其存储在String变量类型中也是如此 . 解决问题的一种方法是将'追加'到 Value 的开头 .

    例如,从Word表中提取值并将它们带到Excel时:

    strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
    
  • 6

    没有声明变量的最短路径是类型提示:

    s$ =  123   ' s = "123"
    i% = "123"  ' i =  123
    

    这不会用 Option Explicit 编译 . 类型不会 VariantStringInteger

  • 0

    另一种方法是将数值的两个已解析部分拼接在一起:

    Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
    

    我发现这比 CStr() 更好,因为 CStr() 似乎不会转换来自我体验变体的十进制数字 .

相关问题