How Do I Convert an Integer to a String in Excel VBA?

后端 未结 10 1753
遥遥无期
遥遥无期 2020-12-07 15:53

How do I convert the integer value \"45\" into the string value \"45\" in Excel VBA?

相关标签:
10条回答
  • 2020-12-07 16:33

    If you have a valid integer value and your requirement is to compare values, you can simply go ahead with the comparison as seen below.

    Sub t()
    
    Dim i As Integer
    Dim s  As String
    
    ' pass
    i = 65
    s = "65"
    If i = s Then
    MsgBox i
    End If
    
    ' fail - Type Mismatch
    i = 65
    s = "A"
    If i = s Then
    MsgBox i
    End If
    End Sub
    
    0 讨论(0)
  • 2020-12-07 16:34

    In my case, the function CString was not found. But adding an empty string to the value works, too.

    Dim Test As Integer, Test2 As Variant
    Test = 10
    Test2 = Test & ""
    //Test2 is now "10" not 10
    
    0 讨论(0)
  • 2020-12-07 16:34

    The accepted answer is good for smaller numbers, most importantly while you are taking data from excel sheets. as the bigger numbers will automatically converted to scientific numbers i.e. e+10.
    So I think this will give you more general answer. I didn't check if it have any downfall or not.

    CStr(CDbl(#yourNumber#))
    

    this will work for e+ converted numbers! as the just CStr(7.7685099559e+11) will be shown as "7.7685099559e+11" not as expected: "776850995590" So I rather to say my answer will be more generic result.

    Regards, M

    0 讨论(0)
  • 2020-12-07 16:36

    Most times, you won't need to "convert"; VBA will do safe implicit type conversion for you, without the use of converters like CStr.

    The below code works without any issues, because the variable is of Type String, and implicit type conversion is done for you automatically!

    Dim myVal As String
    Dim myNum As Integer
    
    myVal = "My number is: "
    myVal = myVal & myNum
    

    Result:

    "My number is: 0"

    You don't even have to get that fancy, this works too:

    Dim myString as String
    myString = 77
    

    "77"

    The only time you WILL need to convert is when the variable Type is ambiguous (e.g., Type Variant, or a Cell's Value (which is Variant)).

    Even then, you won't have to use CStr function if you're compounding with another String variable or constant. Like this:

    Sheet1.Range("A1").Value = "My favorite number is " & 7
    

    "My favorite number is 7"

    So, really, the only rare case is when you really want to store an integer value, into a variant or Cell value, when not also compounding with another string (which is a pretty rare side case, I might add):

    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"

    0 讨论(0)
  • 2020-12-07 16:36

    If the string you're pulling in happens to be a hex number such as E01, then Excel will translate it as 0 even if you use the CStr function, and even if you first deposit it in a String variable type. One way around the issue is to append ' to the beginning of the value.

    For example, when pulling values out of a Word table, and bringing them to Excel:

    strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
    
    0 讨论(0)
  • 2020-12-07 16:39

    CStr(45) is all you need (the Convert String function)

    0 讨论(0)
提交回复
热议问题