Как преобразовать целочисленное значение «45» в строковое значение «45» в Excel VBA?
vba
string
type-conversion
integer
Что происходит
источник
источник
CStr(45)
, точнее.CStr(CDbl(***))
7
становятся007
. Вы также можете указать количество десятичных знаков или включить тысячи разделителей. Если эти детали важны для вас: excelfunctions.net/vba-format-function.htmlПопробуйте функцию CStr ()
источник
В большинстве случаев вам не нужно «конвертировать»; VBA сделает безопасное неявное преобразование типов без использования таких конвертеров, как
CStr
.Приведенный ниже код работает без каких-либо проблем, поскольку переменная имеет тип String, и неявное преобразование типа выполняется автоматически!
Результат:
Вам даже не нужно это придумывать, это тоже работает:
Единственный раз, когда вам потребуется конвертировать, это когда переменная Type неоднозначна (например, Type Variant или Cell
Value
(который является Variant)).Даже в этом случае вам не придется использовать
CStr
функцию, если вы соединяетесь с другой строковой переменной или константой. Как это:Так что, действительно, единственный редкий случай - это когда вы действительно хотите сохранить целочисленное значение в варианте или в значении Cell, когда нет соединения с другой строкой (что, я бы добавил, довольно редкий случай):
источник
Option Base 1
неявной типизацией с помощьюDef[Type]
(boy that EVIL!), Неявного ... Вы получаете это - единственная хорошая неявная вещь в VBA - это неявный синтаксис вызова, который сделал явноеCall
устаревание.В моем случае функция CString не была найдена. Но добавление пустой строки к значению также работает.
источник
CString
, что является функцией VB.NET. Конкатенация пустого строкового литерала для создания строки является довольно неудачным методом преобразования. ИспользуетсяCStr
для явных преобразований типов - это неявное преобразование типов, вызывающее удивление любого, кто читает этот код. Извините, я нашел этот ответ так поздно после того, как он был опубликован, я хотел бы, чтобы я проголосовал за него намного раньше.Если полученная вами строка окажется шестнадцатеричным числом, таким как E01, то Excel преобразует ее в 0, даже если вы используете функцию CStr, и даже если вы впервые поместите ее в переменную типа String. Одним из способов решения этой проблемы является добавление к началу значения.
Например, при извлечении значений из таблицы Word и переносе их в Excel:
источник
Кратчайший путь без объявления переменной - подсказки типа :
Это не будет компилироваться
Option Explicit
. Типы не будут,Variant
ноString
иInteger
источник
Еще один способ сделать это - соединить два проанализированных участка числового значения вместе:
Я нашел лучший успех с этим, чем
CStr()
потомуCStr()
что, кажется, не конвертирует десятичные числа, которые пришли из вариантов в моем опыте.источник
Если у вас есть действительное целочисленное значение и вы хотите сравнить значения, вы можете просто продолжить сравнение, как показано ниже.
источник
Принятый ответ подходит для небольших чисел, что особенно важно, когда вы берете данные из таблиц Excel. поскольку большие числа будут автоматически преобразованы в научные числа, то есть e + 10.
Поэтому я думаю, что это даст вам более общий ответ. Я не проверял, есть ли у него падение или нет.
это будет работать для e + преобразованных чисел! как раз
CStr(7.7685099559e+11)
что будет показано как "7.7685099559e + 11" не так, как ожидалось: "776850995590" Так что я скорее скажу, что мой ответ будет более общим результатом.С уважением, М
источник
Reffer: MrExcel.com - конвертировать числа в текст с помощью VBA
источник