Я использую VBA, и у меня проблема с кнопкой отмены, я не хочу изменять значение в ячейке, если нажата кнопка отмены или кнопка выхода. Как поступить?

Private Sub Workbook_Open()
    Sheets("Start").Range("B1").Value = Application.InputBox(Prompt:="Insert Date", Type:=1)
    Cancel = True
End Sub
2
Xaratsarhs 8 Апр 2014 в 12:47

2 ответа

Лучший ответ

Попробуй это:

Private Sub Workbook_Open()
    Dim inpt
    inpt = Application.InputBox(Prompt:="Insert Date", Type:=1)
    If CStr(inpt) <> "False" Then Sheets("Start").Range("B1").Value = inpt
End Sub

Причина, по которой я использую CStr(inpt) <> "False" вместо inpt <> False или просто If inpt Then, потому что пользователь может ввести 0 (это допустимый ввод для поля ввода с Type:=1)

3
Dmitry Pavliv 8 Апр 2014 в 09:01

Что-то вроде этого (я включил сегодняшнюю дату как выбор по умолчанию)

Dim lngCnt As Long
lngCnt = Application.InputBox(Prompt:="Insert Date", Default:=Format(Now(), "dd-mmm-yy"), Type:=1)
If lngCnt = 0 Then
'user cancelled
Else
Sheets("Start").Range("B1").Value = lngCnt
End If
2
brettdj 8 Апр 2014 в 08:57