Добрый день. Много искал, и впринципе информация есть, но мне нехватает знаний :(. Ни как не получается решить проблему с InputBox, в случаях когда пользователь нажимает "Отмена", либо крестик, либо вводит не верное значение. Код:
[vba]
Код
Option Explicit Private Sub Ins_Price(control As IRibbonControl) .... Dim ColumnIns As Long ..... ColumnIns = InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", "") .....
[/vba]
Пока дошел только до этого. Здесь вообще не понимаю. Ведь лонг должен дать ошибку в случае, если не целое число, а он пропускает и дальше округляет до целого и все работает.
[vba]
Код
If Val(ColumnIns) = 0 Then MsgBox "Номер столбца должен быть целым числом больше нуля!", vbCritical, "DelCols" Exit Sub End If
[/vba]
Но здесь только 0 и всё. Закрытие отменой либо крестиком, приводит к ошибке, как и ввод текстовых значений. Прошу помочь, чтоб работало и красиво было
Добрый день. Много искал, и впринципе информация есть, но мне нехватает знаний :(. Ни как не получается решить проблему с InputBox, в случаях когда пользователь нажимает "Отмена", либо крестик, либо вводит не верное значение. Код:
[vba]
Код
Option Explicit Private Sub Ins_Price(control As IRibbonControl) .... Dim ColumnIns As Long ..... ColumnIns = InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", "") .....
[/vba]
Пока дошел только до этого. Здесь вообще не понимаю. Ведь лонг должен дать ошибку в случае, если не целое число, а он пропускает и дальше округляет до целого и все работает.
[vba]
Код
If Val(ColumnIns) = 0 Then MsgBox "Номер столбца должен быть целым числом больше нуля!", vbCritical, "DelCols" Exit Sub End If
[/vba]
Но здесь только 0 и всё. Закрытие отменой либо крестиком, приводит к ошибке, как и ввод текстовых значений. Прошу помочь, чтоб работало и красиво было TD_MElec
Сообщение отредактировал TD_MElec - Понедельник, 26.10.2020, 20:22
Sub tttt() Dim ColumnIns As Long ColumnIns = Application.InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", 1, , , , , 1) If ColumnIns = 0 Then Exit Sub 'нажали Отмена MsgBox "номер столбца: " & ColumnIns, 64 End Sub
[/vba] Если введено десятичное число, то Long да, округляет до целого. Ну т.е. пользователь ввел номер столбца 4,8. Ладно, пусть будет 5 )
типа такого: [vba]
Код
Sub tttt() Dim ColumnIns As Long ColumnIns = Application.InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", 1, , , , , 1) If ColumnIns = 0 Then Exit Sub 'нажали Отмена MsgBox "номер столбца: " & ColumnIns, 64 End Sub
[/vba] Если введено десятичное число, то Long да, округляет до целого. Ну т.е. пользователь ввел номер столбца 4,8. Ладно, пусть будет 5 )nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Понедельник, 26.10.2020, 20:29
nilem, Ваш вариант работает, но при нем рабочая таблица "пропадает", понятно дело тут нет ничего страшного, но это может испугать пользователя
Использую это:
[vba]
Код
ColumnIns = InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", "") If Not IsNumeric(ColumnIns) Or ColumnIns <= 0 Then GoTo Final ColumnIns = Int(ColumnIns)
[/vba]
nilem, PelenaСпасибо большое за ответы
nilem, Ваш вариант работает, но при нем рабочая таблица "пропадает", понятно дело тут нет ничего страшного, но это может испугать пользователя
Использую это:
[vba]
Код
ColumnIns = InputBox("Укажите номер столбца для вставки данных.", "Запрос данных", "") If Not IsNumeric(ColumnIns) Or ColumnIns <= 0 Then GoTo Final ColumnIns = Int(ColumnIns)