Здравствуйте. Есть форма ввода числовых значений на лист. Если заполнить все текстбоксы - работает. Если хотя б один текстбокс без числа - ошибка. Что нужно сделать, чтобы не было ошибки?
[вложение удалено администратором]
Amator, что означают квадратные скобки:?
[TextBox1]
Для числового формата.
Amator, что означает эта строка:?
.Cells(iLastRow, "I") = CDbl(Format([TextBox1], "0.0"))
Поместить в ячейку, в столбце "I" текст из формы, из элемента "TextBox1"? Или что-то другое?
Да, поместить в ячейку, в столбец "I" число (например 4,561) из формы, из элемента "TextBox1". В данных текстбоксах будут только числа (типа 0,000 или 00,000).
Amator, удалите из макроса квадратные скобки и снова выложите форму на Форуме.
Я не использую вокруг элементов управления квадратные скобки, поэтому не понимаю, что это такое.
Удалил.
[вложение удалено администратором]
Amator, что должно попасть в Excel-ячейку, если в текстбоксе пусто?
Ячейка должна остатся пустой.
Внёс изменения в макрос.
[вложение удалено администратором]
Еще вопрос. Данные заносятся на лист после выхода из формы. Что нужно сделать, что б заносились после нажатия кнопки ВВОД, не закрывая форму?
Можно вот это использовать вместо того, что в коде:
'Взятие данных из текстбоксов в массив, это упростит макрос.
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
Amator, в файле "Module1", в процедуре "ShowMainForm", у вас есть:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Зачем Вы используете эти команды?
Команды убрал. Все заработало как надо. Спасибо за помощь!
Amator, вообще, команда:
Application.ScreenUpdating = False
используется, чтобы не обновлялись данные на мониторе. Это делается для двух целей:
- для ускорения работы макроса. Например, эта команда необходима при скрытии Excel-строк, чтобы макрос быстро работал;
- чтобы на мониторе не мерцало, чтобы пользователю было удобно.
Команда:
Application.DisplayAlerts = False
используется, чтобы не отображались какие-нибудь сообщения программы "Excel". Например, если Вы будете удалять Excel-лист, на котором есть данные, то появится сообщение. Вот эта команда скроет такое сообщение.