Поле ввода отмены Excel VBA не возвращает ложь / выход

У меня есть кнопка команды на моем листе Excel, которая открывает окно application.input, предварительно загруженное с текущим выбранным диапазоном, и добавляет содержимое ячеек в этом диапазоне к комментарию к этим ячейкам.

Я использую оператор if / else для проверки нажатия кнопки отмены, но она не выходит из подпрограммы; код запускается, нажимаю ли я кнопку ОК или Отмена. Я думаю, что либо кнопка отмены не возвращает "ложь", либо мой оператор if не работает.

Вот код:

Private Sub CommentLogButton_Click()
'This Sub Appends Cell Contents to Cell Comment
Dim rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "Range to Log"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
If WorkRng = False Then
    Exit Sub
Else
    For Each rng In WorkRng
        rng.NoteText Text:=rng.NoteText & rng.Value & ", "
        rng.Value = ""
    Next
End If
End Sub

2 ответа

WorkRng был объявлен как диапазон.

+ Изменить

If WorkRng = False Then

в

If WorkRng is nothing Then

Измените свой код на

Private Sub CommentLogButton_Click()
    'This Sub Appends Cell Contents to Cell Comment
    Dim rng As Range, WorkRng As Range
    Dim rngAddress As String

    xTitleId = "Range to Log"

    '~~> Check if what the user selected is a valid range
    If TypeName(Selection) <> "Range" Then
        MsgBox "Select a range first."
        Exit Sub
    End If

    rngAddress = Application.Selection.Address

    On Error Resume Next
    Set WorkRng = Application.InputBox("Range", xTitleId, rngAddress, Type:=8)
    On Error GoTo 0

    If WorkRng Is Nothing Then
        Exit Sub
    Else
        For Each rng In WorkRng
            rng.NoteText Text:=rng.NoteText & rng.Value & ", "
            rng.Value = ""
        Next
    End If
End Sub
Dim sRange As String

sRange = Application.InputBox("Range", xTitleId, Application.Selection.Address)
Is sRange = "" Then
    Exit Sub
Else
    Set WorkRng = Range(sRange)
End If
Другие вопросы по тегам