Перейти к содержимому

Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).

     

     

    Использования функции преобразования текста в число в макросах Excel.

    Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox».  Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться.

    Для решения денной проблемы в VBA можно использовать функцию  VAL(), которая переводит в численный формат данных. VAL  — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10

    Рассмотрим пример кода с данной функцией (VAL) и без нее:

    Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1»  вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).форма для заполнения exccel VBA


    Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:

    1. Private Sub CommandButton1_Click()
    2. Dim i, b As String
    3. i = TextBox1.Value
    4. b = TextBox2.Value
    5. If i < b = True Then MsgBox («Второе число больше «)
    6. If i > b = True Then MsgBox («Первое число больше «)
    7. End Sub

    А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:

     

    1. Private Sub CommandButton2_Click()
    2. Dim i, b, d As String
    3. i = UserForm1.TextBox1.Value
    4. b = UserForm1.TextBox2.Value
    5. d = i + b
    6. TextBox3.Value = d End Sub

    Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:сравнение чисел макрос VBAСумма чисел макрос VBA

    Применим функцию VAL () в этих кодах:


    1-й код (Сравнение двух чисел)

    1. Private Sub CommandButton1_Click()
    2. Dim i, b As String
    3. i = Val(UserForm1.TextBox1.Value)
    4. b = Val(UserForm1.TextBox2.Value)
    5. If i < b = True Then MsgBox («Второе число больше «)
    6. If i > b = True Then MsgBox («Первое число больше «)
    7. End Sub

    2-й код (Сумма двух чисел)

    1. Private Sub CommandButton2_Click()
    2. Dim i, b, d As String
    3. i = Val(UserForm1.TextBox1.Value)
    4. b = Val(UserForm1.TextBox2.Value)
    5. d = i + b
    6. TextBox3.Value = d End Sub

    С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.Верная сумма в VBA

    Скачать файл с макросом суммы и сравнения двух чисел.

     

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

    Политика конфиденциальности

    Наш сайт использует файлы cookies, чтобы улучшить работу и повысить эффективность сайта. Продолжая работу с сайтом, вы соглашаетесь с использованием нами cookies и политикой конфиденциальности.

    Принять