Как проверить, является ли ячейка пустой с помощью VBA

Я пытаюсь сделать форму на excel, чтобы, когда люди не заполняют определенные ячейки, они получат всплывающие сообщения об ошибках. До сих пор я сделал этот код:

If Len(I8) = 0 Then MsgBox "Please enter Required Date", vbExclamation Exit Sub ElseIf Len(D11) = 0 Then MsgBox "Please enter your name", vbExclamation Exit Sub ElseIf Len(H11) = 0 Then MsgBox "Please enter Work Phone", vbExclamation Exit Sub ElseIf Len(L11) = 0 Then MsgBox "Please enter Home Phone", vbExclamation Exit Sub End If MsgBox "All mandatory fields have been entered", vbExclamation End Sub 

Казалось, что это сработало, но когда я добавил текст в ячейку I8 , в любом случае всплыло msgbox «Please enter Required Date».

Я также попытался использовать Count(I8) = 0 и IfEmpty(I8) = True , но ни один из них не был правильно распознан в vba.

Кроме того, если я хочу, чтобы всплывающее сообщение появлялось, когда ячейка не заполнена, если они выбрали «ДА» из раскрывающегося списка, какова будет функция? До сих пор я писал

 ElseIf Range("D28") = "P16" And Len(Range("M30")) = 0 Then MsgBox "Please Select whether this file is classified as confidential", vbExclamation Exit Sub 

Но мне нужна определенная функция, и я не уверен, что выбрать. Есть ли более длинный способ сделать это, чтобы обе ячейки заполнились, если они выбрали yes в первой ячейке?

    Когда вы используете что-то вроде If Len(I8) = 0 Then в VBA предполагается, что I8 является переменной. Поскольку у вас явно нет этой переменной, Len(I8) всегда будет равен нулю.

    Вы должны использовать Range("I8") или даже ActiveSheet.Range("I8").Value Вместо этого нужно получить значение, которое действительно находится в этой ячейке.

    Поэтому ваш код должен измениться на:

     If Len(Range("I8")) = 0 Then MsgBox "Please enter Required Date", vbExclamation Exit Sub ElseIf Len(Range("D11")) = 0 Then MsgBox "Please enter your name", vbExclamation Exit Sub ElseIf Len(Range("H11")) = 0 Then MsgBox "Please enter Work Phone", vbExclamation Exit Sub ElseIf Len(Range("L11")) = 0 Then MsgBox "Please enter Home Phone", vbExclamation Exit Sub End If MsgBox "All mandatory fields have been entered", vbExclamation End Sub 

    Чтобы избежать подобных проблем, вы можете указать Option Explicit в самой верхней части модуля. Это приводит к тому, что excel выдает ошибку, когда вы используете необъявленные переменные, вместо этого, вместо того, чтобы просто догадываться, что с ней делать.

    См. Комментарии, почему ваш код не работает. Ниже приведены утверждения, которые будут оценивать True если ваша ячейка пуста:

     IsEmpty(myCell) myCell.Value = vbNullstring Len(myCell) = 0 

    Наслаждайтесь!

    Interesting Posts

    Я пытаюсь преобразовать лист распространения Excel в C # .Net-интерфейс, есть строка, которая меня путает. Все могут объяснить мне логику этой линии

    Ошибка установки возвращаемого значения функции VBA

    Excel VBA Нужно добавлять комментарии к нескольким ячейкам в зависимости от их стоимости

    Может ли Excel найти строку и столбец, используя значения ячеек в качестве ссылки?

    EXCEL VBA СРАВНЕНИЕ 2 КОЛОННЫ

    Обновление значений на листе Excel во время выполнения макросов

    Обходное решение для разделителей CSV C #

    Возвращение нескольких значений с помощью формулы массива INDEX

    Функция vba для копирования ячейки и пасты в специальную ячейку, где я пишу = макрофункция

    Удаление элементов управления из пользовательской формы Excel с помощью VBIDE

    Автоматическое обновление таблицы / графика Excel в одной записке (в режиме реального времени?)

    вызывать формы VBA с помощью кнопки в Excel

    Excel vba – найти номер строки, где данные colum (несколько статей)

    Горизонтальный поиск по нескольким критериям

    excel условный формат даты цикла между

    Давайте будем гением компьютера.