Add an apostrophe to change number to text format If these are just 2 or 3 cells in Excel where you want to convert numbers to string, benefit from adding an apostrophe before the number. This will instantly change the number format to text. Just double-click in a cell and enter the apostrophe before the numeric value.
Step 1: In the same module let us start another subprocedure as shown below. Step 2: Declare two variables as an integer for the integer values. Step 3: Then assign some values to these integer variables. Step 4: Now let us use the addition operator for the concatenation.
In Microsoft VBA, variant is a common datatype. It can be used to store strings or integers or even dates. Integer is a specific datatype which can be used to store numbers of a specific length. The bigger version of an integer is called “long.”
CStr(45)
is all you need (the Convert String function)
Try the CStr() function
Dim myVal as String;
Dim myNum as Integer;
myVal = "My number is:"
myVal = myVal & CStr(myNum);
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"
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
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)
The shortest way without declaring the variable is with Type Hints :
s$ = 123 ' s = "123"
i% = "123" ' i = 123
This will not compile with Option Explicit
. The types will not be Variant
but String
and Integer
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
Reffer: MrExcel.com – Convert numbers to text with VBA
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With