Остановка макроса, если не введено значение - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу, чтобы мой макрос остановился, если ни в одной из четырех ячеек не введено значение. Но я хочу, чтобы он работал, если в этих четырех ячейках есть хотя бы одно значение.

Это то, что у меня есть:

If Range("e12,h12,k12,d12").Value = "" Then
MsgBox ("Por favor introducir dimensiones")
Range("e12").Select
Exit Sub
End If

Если вы введете значение в ячейку e12, оно побежит. Но если вы введете значение в любую другую ячейку, появится сообщение msgbox и макрос остановится.

Не могли бы вы помочь мне найти проблему?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы можете использовать функцию WorksheetFunction.CountA() для подсчета количества непустых ячеек:

If WorksheetFunction.CountA(Range("e12,h12,k12,d12")) <> 4 Then
    MsgBox ("Por favor introducir dimensiones")
    Range("e12").Select
    Exit Sub
End If
0 голосов
/ 17 апреля 2020

Пожалуйста, установите процедуру события ниже в кодовой таблице рабочего листа, для которого вы хотите действие.

Private Sub Worksheet_Change(ByVal Target As Range)

    Const Triggers As String = "E12,H12,K12,D12"
    Dim Rng As Range
    Dim Cell As Range

    ' skip if more than one cell was changed (like paste)
    If Target.Cells.CountLarge = 1 Then
        Set Rng = Range(Triggers)
        For Each Cell In Rng
            If Cell.Value = "" Then
                Cell.Select
                Exit For
            End If
        Next Cell
    End If
End Sub

Теперь, если пользователь вводит что-то в E12, макрос выберет H12. Если пользователь вводит что-то в D12, следующий макрос вернет его к K12. Это все очень хорошо.

Но если пользователь что-то изменит в A3 (где угодно, фактически), он попадет в первую пустую ячейку диапазона триггера. Поэтому система должна быть настроена так, чтобы соответствовать вашему рабочему процессу. Возможно, код должен выполняться только при вводе D12 или когда пользователь щелкает ячейку, на которую он не должен щелкать до завершения диапазона триггера.

Короче говоря, объем процедуры, возможно, придется урезать в соответствии с вашим рабочим процессом. Это может быть сделано либо путем включения указанных c ячеек в диапазон запуска, либо путем исключения других ячеек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...