Как преобразовать целое число в строку в Excel VBA?
Как преобразовать целое значение "45" в строка значение " 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"
единственный раз, когда вам нужно будет преобразовать, это когда тип переменной неоднозначен (например, введите Variant илиValue
(где is вариант)).
даже тогда вам не придется использовать 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()
не похоже, чтобы конвертировать десятичные числа, которые пришли из вариантов в моем опыте.