Как преобразовать целое число в строку в Excel VBA?

Как преобразовать целое значение "45" в строка значение " 45 " в Excel VBA?

7 ответов


cstr(45) все, что вам нужно (преобразование в строку)


попробуйте функцию 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() не похоже, чтобы конвертировать десятичные числа, которые пришли из вариантов в моем опыте.