Vba excel как перевести число в текст

Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.

Синтаксис функций преобразования

Выражение (аргумент) – это любое строковое или числовое выражение, возвращающее значение, входящее в диапазон допустимых значений для аргумента. Выражение может быть представлено переменной или другой функцией.

Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

Функции преобразования типов

Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:

Функция Тип данных Диапазон значений аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента Выражение.
CVar Variant Диапазон совпадает с типом Double  для числовых значений и с типом  String  для нечисловых значений.

Дополнительно для VBA7:

Функция Тип данных Диапазон значений аргумента
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ.
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

Dim a

a = CBool(10) ‘Результат: True

a = CBool(0) ‘Результат: False

a = CBool(«True») ‘Результат: True

a = CBool(«Test») ‘Результат: Error

Dim a, b, c

a = «Test1»

b = «Test2»

c = CBool(a = b) ‘Результат: False

c = CBool(a <> b) ‘Результат: True

Функция CByte

Функция CByte используется для преобразования выражений в тип данных Byte.

Dim a, b, c

a = 654

b = 3.36

c = a / b ‘Результат: 194,642857142857

c = CByte(c) ‘Результат: 195

c = a * b ‘Результат: 2197,44

c = CByte(c) ‘Результат: Error

Функция CCur

Функция CCur используется для преобразования выражений в тип данных Currency.

Dim a, b, c

a = 254.6598254

b = 569.2156843

c = a + b ‘Результат: 823,8755097

c = CCur(a + b) ‘Результат: 823,8755

Функция CDate

Функция CDate используется для преобразования выражений в тип данных Date. Она распознает форматы даты в соответствии с национальной настройкой системы.

Dim a As String, b As Date, c As Double

a = «28.01.2021»

b = CDate(a) ‘Результат: #28.01.2021#

c = CDbl(b) ‘Результат: 44224

Dim a

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

a = CDate(44298) ‘Результат: #12.04.2021#

a = CDate(0.63895) ‘Результат: #15:20:05#

Функция CDbl

Функция CDbl используется для преобразования выражений в тип данных Double.

Dim a As String, b As String, c As Double

a = «45,3695423»

b = «548955,756»

c = CDbl(a) + CDbl(b) ‘Результат: 549001,1255423

Примечание
Eсли основной язык системы – русский, при записи в редакторе VBA Excel дробного числа в виде текста, ставим в качестве разделителя десятичных разрядов – запятую. Проверьте разделитель по умолчанию для своей национальной системы:
MsgBox Application.DecimalSeparator

Функция CDec

Функция CDec используется для преобразования выражений в тип данных Decimal.

Dim a As String, b As Double, c

a = «5,9228162514264337593543950335»

b = 5.92281625142643

c = CDec(a) CDec(b) ‘Результат: 0,0000000000000037593543950335

Dim a As Double, b As String, c

a = 4.2643E14

b = CStr(a) ‘Результат: «4,2643E-14»

c = CDec(a) ‘Результат: 0,000000000000042643

Функция CInt

Функция CInt используется для преобразования выражений в тип данных Integer.

Dim a As String, b As Integer

a = «2355,9228»

b = CInt(a) ‘Результат: 2356

Функция CLng

Функция CLng используется для преобразования выражений в тип данных Long.

Dim a As Date, b As Long

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

b = CLng(a) ‘Результат: 44299

a = CDate(b) ‘Результат: #13.04.2021#

Функция CSng

Функция CSng используется для преобразования выражений в тип данных Single.

Dim a As String, b As Single

a = «3,2365625106»

b = CSng(a) ‘Результат: 3,236562

Функция CStr

Функция CStr используется для преобразования выражений в тип данных String.

Dim a As Single, b As String

a = 5106.23

b = CStr(a) ‘Результат: «5106,23»

Функция CVar

Функция CVar используется для преобразования выражений в тип данных Variant.

Dim a As Double, b As String, c

a = 549258.232546

b = «Новое сообщение»

c = CVar(a) ‘Результат: 549258,232546 (Variant/Double)

c = CVar(b) ‘Результат: «Новое сообщение» (Variant/String)

Функции преобразования типов данных используются в тексте процедур VBA Excel для того, чтобы указать, что результатом выполнения той или иной операции должны стать данные определенного типа, отличающегося от типа, заданного по умолчанию.


Return to VBA Code Examples

We have already covered an introduction to string functions in our VBA Strings and Substrings Functions tutorial. In this tutorial, we are going to look at how to convert an integer to a string (click here to learn about converting Strings to Numbers). The reason you would want to convert a number or date to a string is in order to use string manipulation functions on these values.

The VBA CStr Function

The VBA CStr Function allows you to convert a number, date or boolean data type to a string.

MsgBox CStr (88)

The syntax of the CStr Function is:

CStr(expression) where expression is the number or date that you want to convert.

The following code shows you how numbers are outputted compared to text, including by using the CStr Function.

Sub UsingTheConvertToStringFunction()


Debug.Print CStr(8)
Debug.Print "Text"
Debug.Print 8
Debug.Print 2


End Sub

This uses Debug.Print to output the results to the Immediate Window.

Converting An Integer To A String in VBA

Both CStr(8) and the word Text are displayed as text and are left aligned whereas the two numbers are right aligned within the immediate window.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

Most times, you won’t need to «convert»; VBA will do safe implicit type conversion for you, without the use of converters like CStr.

The below code works without any issues, because the variable is of Type String, and implicit type conversion is done for you automatically!

Dim myVal As String
Dim myNum As Integer

myVal = "My number is: "
myVal = myVal & myNum

Result:

«My number is: 0»

You don’t even have to get that fancy, this works too:

Dim myString as String
myString = 77

«77»

The only time you WILL need to convert is when the variable Type is ambiguous (e.g., Type Variant, or a Cell’s Value (which is Variant)).

Even then, you won’t have to use CStr function if you’re compounding with another String variable or constant. Like this:

Sheet1.Range("A1").Value = "My favorite number is " & 7

«My favorite number is 7»

So, really, the only rare case is when you really want to store an integer value, into a variant or Cell value, when not also compounding with another string (which is a pretty rare side case, I might add):

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»

OBJECTS
Worksheets: The Worksheets object represents all of the worksheets in a workbook, excluding chart sheets.
Range: The Range object is a representation of a single cell or a range of cells in a worksheet.

PREREQUISITES
Worksheet Name: Have a worksheet named Analyst.
Number to convert to Text: Ensure that the number that you want to convert to text is captured in cell («B5»).

ADJUSTABLE PARAMETERS
Output Range: Select the output range by changing the cell reference («C5») in the VBA code to any cell in the worksheet, that doesn’t conflict with the formula.
Number to convert to Text: Select the number that you want to convert to text by changing the cell reference («B5») to any cell in the worksheet that contains the number that you want to convert to text and doesn’t conflict with the formula.

voidex

168 / 6 / 3

Регистрация: 05.07.2013

Сообщений: 62

1

Как преобразовать число в текст (на подобии =текст() )

06.05.2014, 10:17. Показов 50639. Ответов 10

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Нужно какую нибудь функцию VBA, которая бы выполняла то же самое что и =текст() (тесть преобразования чего либо в ячейке в текст)

Попробовал записать макрос используя эту функцию получилось следующее:

Visual Basic
1
 ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],0)"

не совсем то

Чтото на подобии

Visual Basic
1
2
3
4
    
Sub m_1()
Columns("A").NumberFormat = "0.00"
End Sub

Спасибо.



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

06.05.2014, 10:29

2

Зачем?
Есть ведь фукнции листа, тот же TRIM() например.
Хотя непонятно зачем



0



168 / 6 / 3

Регистрация: 05.07.2013

Сообщений: 62

06.05.2014, 10:31

 [ТС]

3

Вроде удлаось использовать ActiveCell.FormulaR1C1 = «=TEXT(RC[-1],0)» как было нужно, но если кто знает функции vba поделитесь



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

06.05.2014, 10:33

4

Лучший ответ Сообщение было отмечено voidex как решение

Решение

В VBA есть cstr()



1



voidex

168 / 6 / 3

Регистрация: 05.07.2013

Сообщений: 62

06.05.2014, 11:15

 [ТС]

5

Кстати как не странно cstr не хочет преобразовывать в текст ,тоесть excel не смещает текст влево и не появляется зеленый треугольничек, говорящий о том, что это число форматированное как тест

Visual Basic
1
2
3
4
 Sub test()
myvalue = Cells(5, 1)
Cells(3, 3) = CStr(myvalue)
End Sub

Добавлено через 14 минут
И еще такой вопрос, можно ли как то задать длину поля в excel, как в access? тоесть например 1 знак или 5 итд..
Просто excel сохраняет по умолчанию 9 как я посмотрел



0



Hugo121

6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

06.05.2014, 11:23

6

Лучший ответ Сообщение было отмечено voidex как решение

Решение

cstr() преобразовывает в текст — а эксель преобразовывает назад. Он ведь не дурак — видит что это число.
Тогда перед тем, как писать это «тексточисло» в ячейку — сделайте ей текстовый формат.
Я спрашивал зачем — не ответите?

Visual Basic
1
2
3
4
5
Sub test()
    myvalue = Cells(5, 1)
    Cells(3, 3).NumberFormat = "@"
    Cells(3, 3) = CStr(myvalue)
End Sub



1



168 / 6 / 3

Регистрация: 05.07.2013

Сообщений: 62

06.05.2014, 11:32

 [ТС]

7

Из сапа выгружается excel файл, его нужно будет отформатировать макросом и сохранить 2003 офисов в dbf, а после загружать в старую программу которая читает только дбф файлы, поэтому нужно чтобы поля были в текстовом формате, еще не уверен насчет длины полей тк пока что не проверили
Если все получится, то это упростит жизнь многим людям
______________

Спасибо, теперь заработало, гораздо лучше вариант чем FormulaR1C1 = «=TEXT(RC[-1],0)»



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

06.05.2014, 11:40

8

В dbf есть текстовые и нетекстовые числовые поля? Я правда не в курсе…
Если сохранять в dbf как есть — получается не то?
Ну если что — задать столбцу текстовый формат, выгрузить в него массив текстовых чисел. Их можно получить или перекладыванием в текстовый массив (текстового типа), или индивидуально преобразовав каждый элемент массива.



0



168 / 6 / 3

Регистрация: 05.07.2013

Сообщений: 62

06.05.2014, 11:41

 [ТС]

9

И как я понимаю @ — текстовй формат
а какие еще есть «знаки» для numberforma?

просто исходя из
Integer %
Long &
Single !
Double #
String $
Currency @
не вяжется)



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

06.05.2014, 11:48

10

Включите рекордер, позадавайте форматов, выключите. И смотрите код.



1



4 / 4 / 0

Регистрация: 14.04.2012

Сообщений: 11

21.07.2016, 21:20

11

я делаю так: Cells(3, 3).value=»‘» & Cells(3, 3).value



0



Понравилась статья? Поделить с друзьями:
  • Vba excel как очистить ячейку в excel
  • Vba excel как очистить строку
  • Vba excel как очистить столбец
  • Vba excel как очистить переменную
  • Vba excel как очистить listbox