Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Amator от 10 мая 2014, 13:28

Название: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 13:28
Здравствуйте. Есть форма ввода числовых значений на лист. Если заполнить все текстбоксы - работает. Если хотя б один текстбокс без числа - ошибка. Что нужно сделать, чтобы не было ошибки?

[вложение удалено администратором]
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 13:46
Amator, что означают квадратные скобки:?
[TextBox1]
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 13:48
Для числового формата.
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 13:53
Amator, что означает эта строка:?
        .Cells(iLastRow, "I") = CDbl(Format([TextBox1], "0.0"))

Поместить в ячейку, в столбце "I" текст из формы, из элемента "TextBox1"? Или что-то другое?
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 13:59
Да, поместить в ячейку, в столбец "I" число (например 4,561)  из формы, из элемента "TextBox1". В данных текстбоксах будут только числа (типа 0,000 или 00,000).
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 14:01
Amator, удалите из макроса квадратные скобки и снова выложите форму на Форуме.
Я не использую вокруг элементов управления квадратные скобки, поэтому не понимаю, что это такое.
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 14:06
Удалил.

[вложение удалено администратором]
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 14:16
Amator, что должно попасть в Excel-ячейку, если в текстбоксе пусто?
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 14:17
Ячейка должна остатся пустой.
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 14:40
Внёс изменения в макрос.

[вложение удалено администратором]
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 14:52
Еще вопрос. Данные заносятся на лист после выхода из формы. Что нужно сделать, что б заносились после нажатия кнопки ВВОД, не закрывая форму?
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 14:52
Можно вот это использовать вместо того, что в коде:

    'Взятие данных из текстбоксов в массив, это упростит макрос.
    For i = 1 To UBound(arrMy) Step 1
        'Имя у текстобокса должно начинаться словом "TextBox"
            'или нужно внести изменения в макрос.
        'Если в текстбоксе пусто, то помещение в элемента массива "arrMy" пустой строки.
            'Эта пустая строка встанет в Excel.
        If Me.Controls("TextBox" & i).Text <> "" Then
            arrMy(i) = CDbl(Format(Me.Controls("TextBox" & i).Text, "0.0"))
        End If
    Next i
   
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 14:56
Amator, в файле "Module1", в процедуре "ShowMainForm", у вас есть:
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

Зачем Вы используете эти команды?
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Amator от 10 мая 2014, 15:04
Команды убрал. Все заработало как надо. Спасибо за помощь!
Название: Re: Форма ввода чисел из текстбокса.
Отправлено: Администратор от 10 мая 2014, 15:29
Amator, вообще, команда:
Application.ScreenUpdating = False

используется, чтобы не обновлялись данные на мониторе. Это делается для двух целей:
Команда:
Application.DisplayAlerts = False

используется, чтобы не отображались какие-нибудь сообщения программы "Excel". Например, если Вы будете удалять Excel-лист, на котором есть данные, то появится сообщение. Вот эта команда скроет такое сообщение.