Как преобразовать целое число в строку в Excel VBA?
Как мне преобразовать целое значение "45" в string значение " 45 " в Excel VBA?
7 ответов:
попробуйте функцию CStr ()
Dim myVal as String; Dim myNum as Integer; myVal = "My number is:" myVal = myVal & CStr(myNum);
в большинстве случаев вам не нужно будет "конвертировать"; VBA сделает для вас безопасное неявное преобразование типов, без использование конвертеров, как
CStr
.ниже код работает без каких-либо проблем, потому что переменная имеет тип 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
функция, если вы смешиваете с другой строковой переменной или константой. Вот так:Sheet1.Range("A1").Value = "My favorite number is " & 7
" мой любимый номер 7"
так, действительно, единственный редкая случай, когда вы действительно хотите сохранить целое значение, в вариант или значение ячейки, когда не также смешивается с другой строкой (что является довольно редким боковым случаем, я мог бы добавить):
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, то Excel переведет его как 0, даже если вы используете функцию CStr, и даже если вы сначала поместите его в тип строковой переменной. Один из способов обойти эту проблему-добавить ' к началу значения.
например, при извлечении значений из таблицы Word и приведении их в Excel:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
самый короткий путь без объявления переменной с типом подсказок:
s$ = 123 ' s = "123" i% = "123" ' i = 123
Это не будет компилироваться с
Option Explicit
. Типы не будутVariant
ноString
иInteger
другой способ сделать это-соединить два разбираемых раздела числового значения вместе:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
Я нашел лучший успех с этим, чем
CStr()
, потому чтоCStr()
не похоже, чтобы конвертировать десятичные числа, которые пришли из вариантов в моем опыте.