У меня есть лист в Excel: введите описание изображения здесь
Моя цель - пользователь не должен иметь возможность продолжить, пока все поля не будут заполнены из моих раскрывающихся списков.
В противном случае - должно появиться какое-то предупреждение или просто не будет ' Позвольте им перейти к следующей записи, прежде чем все поля будут введены с данными.
Еще одна важная деталь - моя форма содержит раскрывающиеся списки во всех полях. Вот почему простое правило проверки данных не работает. (Там уже другие правила и формулы)
А еще возможно ли сделать то, что описано в vba? У меня excel 2017
спасибо!
обновление из ада - 1931 Я, вероятно, делаю что-то не так Я разместил ваш код следующим образом:
Private Sub Worksheet_Deactivate()
Dim sh As Worksheet, lastRow As Long, lastCol As Long,
emptyCells As Range
Set sh = Worksheets("ClientSatisfactionForm") ' very important to fully
qualify it (not ActiveSheet)!
lastRow = sh.Range("A" & Rows.Count).End(xlUp).Row
lastCol = sh.Cells(1, Columns.Count).End(xlToLeft).Column
On Error Resume Next
Set emptyCells = sh.Range(sh.Cells(1, 1), sh.Cells(lastRow,
lastCol)).SpecialCells(xlCellTypeBlanks)
If Err.Number = 1004 Then
Err.Clear: On Error GoTo 0: Exit Sub
End If
On Error GoTo 0
If emptyCells.Cells.Count > 0 Then
MsgBox "There are empty cells, which must be filled: " &
emptyCells.Address(0, 0)
sh.Activate: emptyCells.Select
Exit Sub
End If
End Sub
Теперь он не отображает никаких сообщений об ошибках (как это было в предыдущей версии - когда я выполнял при закрытии события), даже если я ввожу пустую строку, теперь он просто спрашивает о сохранении листа ....
PS - всякий раз, когда я меняю событие на «Before Close», этот код работает так же, как и предыдущий. Но все же позволяет выйти из рабочего листа, сохраняя пустые ячейки ..