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


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

7 130

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"

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