Если ячейка не пустая то excel макрос

Перейти к содержимому

Макрос проверки заполнения ячеек.

Периодически при создании различных макросов в VBA Excel возникает потребность  в том, чтобы алгоритм макроса самостоятельно определял, пуста ли ячейка или заполнена данными.

Далее приведем несколько простых макросов  для определения заполнения ячейки данными и разберем принцип их работы. Фрагменты этих макросов вы можете добывать в свой код для реализации проверки заполнения ячеек.

Рассмотрим несколько вариантов VBA алгоритмов:Макро VBA Excel

Алгоритм для строго определенной ячейки с применением её адреса.

Пример для ячейки с адресом B6:

  •     Private Sub CommandButton1_Click() ‘наименование алгоритма
  •      If IsEmpty(Range(«B6»)) = True Then  ‘условие, если ячейка пустая, то
  •      MsgBox («В ячейке нет данных») ‘вывод сообщения, что в ячейке нет данных
  •      Else  ‘в противном случае
  •      MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
  •      End If  ‘конец блока «если»
  •     End Sub ‘конец алгоритма

Алгоритм для выделенной (активной)  ячейки :

    • Private Sub CommandButton1_Click() ‘наименование алгоритма    
    • If IsEmpty(ActiveCell) = True Then ‘условие, если активная ячейка (ActiveCell)  пустая, то
    •      MsgBox («В ячейке нет данных»)  ‘вывод сообщения, что в ячейке нет данных
    •      Else  ‘в противном случае
    •      MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
    •      End If  ‘конец блока «если»
    •     End Sub ‘конец алгоритма

    Еще один способ определения в примере для активной ячейки, но можно использовать  и для конкретной ячейки с адресом.

      • Private Sub CommandButton1_Click() ‘наименование алгоритма    
      • If Len(ActiveCell) Then ‘если активная ячейка заполнена данными (имеет объем информации)
      • MsgBox («Данные внесены в ячейку»)  ‘вывод сообщения, что в ячейке есть данные
      • Else  ‘в противном случае
      • MsgBox («Ячейка пустая») ‘вывод сообщения, что в ячейке нет данных
      • End If  ‘конец блока «если»
      •  End Sub  ‘конец алгоритма

      2 / 2 / 2

      Регистрация: 28.09.2015

      Сообщений: 258

      1

      Проверить заполнение ячеек перед выполнением макроса, и вывести сообщение если ячейка пустая

      06.11.2015, 22:16. Показов 11616. Ответов 2


      Студворк — интернет-сервис помощи студентам

      Здравствуйте, подскажите, пожалуйста как можно перед выполнением макроса проверить заполнены ли ячейки и сделать следующее…

      если ячейка А1 пустая — вывести «сообщение» и прекратить выполнение макроса.
      если ячейка А1 не пустая, проверить ячейку B1 (пустая или не пустая).
      если ячейка В1 пустая — вывести «другое сообщение» и прекратить выполнение макроса.
      если ячейка В1 не пустая — выполнить основной код макроса.

      примечание: Ячейки объединенные (А1 и В1 крайние левые ячейки)



      0



      Аксима

      6076 / 1320 / 195

      Регистрация: 12.12.2012

      Сообщений: 1,023

      06.11.2015, 22:27

      2

      Лучший ответ Сообщение было отмечено AlexanderSh88 как решение

      Решение

      Здравствуйте, AlexanderSh88,

      Я бы сделал, наверное, так:

      Visual Basic
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      Sub PreMacroCheck()
          If IsEmpty(Range("A1")) Then 'Если ячейка "A1" пустая...
              MsgBox "сообщение" 'Выводим сообщение.
              End 'Прекращаем выполнение макроса.
          Else 'Иначе, если ячейка "A1" не пустая...
              If IsEmpty(Range("B1")) Then 'Проверяем ячейку "B1"...
                  MsgBox "другое сообщение" 'Выводим другое сообщение.
                  End 'Прекращаем выполнение макроса.
              End If 'Иначе, если ячейка "B1" не пустая, завершаются все If...
          End If
      End Sub 'и управление передается основной процедуре.
       
      Sub ОсновнаяПроцедура()
          PreMacroCheck
          '...
          'Debug.Print "Основная процедура выполнена."
      End Sub

      С уважением,

      Аксима



      1



      2 / 2 / 2

      Регистрация: 28.09.2015

      Сообщений: 258

      06.11.2015, 22:54

       [ТС]

      3

      Аксима, Спасибо, как всегда все работает



      0



      IT_Exp

      Эксперт

      87844 / 49110 / 22898

      Регистрация: 17.06.2006

      Сообщений: 92,604

      06.11.2015, 22:54

      Помогаю со студенческими работами здесь

      Формула если ячейка заполнена, то вывести «B1», если пустая то вывести «A1»
      Добрый вечер!

      Напишите пожалуйста формула, если ячейка "B1" заполнена то вывести число из ячейки…

      Удаление Листа, если ячейка пустая
      Здравствуйте, уважаемые программисты! Прошу Вашей помощи в реализации одного макроса. В книге…

      Выделение ячейки цветом если следующая ячейка не пустая
      Добрый день.

      Помогите разобраться. У меня на столбец "J" созданы правила УФ, при превышении…

      Если пустая ячейка цветная, то создаются линии границ
      Здравствуйте, подскажите, пожалуйста, как сделать так, чтобы у ячейки создавались линии границ,…

      Искать еще темы с ответами

      Или воспользуйтесь поиском по форуму:

      3

      МЕНЮ САЙТА

      • 1
      • 2
      • 3
        • Информация о сайте

        • Развите сайта

      • Excel

        • Приемы работы

        • Инструменты и настройки

        • Интеграция

      • Готовые решения

        • Excel

        • VBA

      • Форумы

        • Вопросы и решения

        • Работа и общение

        • Работа форума и сайта

      • Библиотека

        • Книги по Excel

        • Книги по VBA

        • Разное

      • Видеосалон

      • Справочники

      • Разработчик

      КАТЕГОРИИ РАЗДЕЛА

      ОПРОСЫ


      Определить пустая ячейка или нет

      20.07.2013, 12:03
      Для конкретной ячейки (в примере используется A1):

      Sub excample()
       If IsEmpty(Range("A1")) = True Then
       MsgBox "Ячейка пустая"
       Else
       MsgBox "Ячейка непустая"
       End If
      End Sub

      Для активной ячейки:

      Sub excample()
       If IsEmpty(ActiveCell) = True Then
       MsgBox "Ячейка пустая"
       Else
       MsgBox "Ячейка непустая"
       End If
      End Sub
      • 1
      • 2
      • 3
      • 4
      • 5

      Добавил: Serge_007 |

      | Теги: vba, Епусто, IsEmpty, определить наличие в ячейке

      Просмотров: 62940

      | Рейтинг: 5.0/6

      Всего комментариев: 2

      Порядок вывода комментариев:

         еще можно так
      Sub test()
      If Len(ActiveCell) Then
      MsgBox «Ячейка не пустая»
      Else
      MsgBox «Ячейка пустая»
      End If
      End Sub

      Добавлять комментарии могут только зарегистрированные пользователи.

      [

      Регистрация

      |

      Вход

      ]

      В этом учебном материале вы узнаете, как использовать Excel функцию ISEMPTY с синтаксисом и примерами.

      Описание

      Функцию ISEMPTY Microsoft Excel можно использовать для проверки пустых ячеек или неинициализированных переменных.
      Функция ISEMPTY — это встроенная в Excel функция, которая относится к категории информационных функций. Её можно использовать как функцию VBA в Excel.
      В качестве функции VBA вы можете использовать эту функцию в коде макроса, который вводится через редактор Microsoft Visual Basic Editor.

      Синтаксис

      Синтаксис функции ISEMPTY в Microsoft Excel:

      IsEmpty( value )

      Аргументы или параметры

      value
      Значение, которое вы хотите проверить.
      Если value — пустая ячейка или неинициализированная переменная, эта функция вернет True. В противном случае функция вернет False.

      Возвращаемое значение

      Функция ISEMPTY возвращает True, если value является пустой ячейкой или неинициализированной переменной.
      Функция ISEMPTY возвращает False, если value является ячейкой или переменной, содержащей значение (т.е. не пусто).

      Примечание

      • См. также функцию ЕПУСТО (функция рабочего листа).

      Применение

      • Excel для Office 365, Excel 2019, Excel 2016, Excel 2013, Excel 2011 для Mac, Excel 2010, Excel 2007, Excel 2003, Excel XP, Excel 2000

      Тип функции

      • Функция VBA

      Пример (как функция VBA)

      Функцию ISEMPTY можно использовать только в коде VBA в Microsoft Excel. Мы можем использовать функцию ISEMPTY для проверки ячейки рабочего листа или переменной.
      Давайте рассмотрим оба этих случая.

      С ячейкой рабочего листа

      Если вы хотите проверить, пуста ли ячейка рабочего листа в VBA, вы не можете использовать функцию рабочего листа ЕПУСТО. В VBA необходимо использовать функцию ISEMPTY. Вот пример того, как с помощью функции ISEMPTY проверить, пуста ли ячейка листа:

      Sub TestCellA1()

        ‘Проверяет, является ли значение ячейки A1 пусто

        If IsEmpty(Range(«A1»).Value) = True Then

         MsgBox «Ячейка A1 пуста»

        End If

      End Sub

      В этом примере мы проверим, пуста ли ячейка A1.
      Если ячейка A1 пуста, отобразится сообщение «Ячейка A1 пуста».

      С переменной

      Функцию ISEMPTY также можно использовать для проверки, инициализирована ли переменная.
      Если переменная не была инициализирована, функция ISEMPTY вернет true. В противном случае функция вернет false.

      Переменная не инициализирована

      Давайте сначала рассмотрим пример, когда переменная не была инициализирована:

      Sub TestVariable()

        Dim LResult

      ‘Проверить, инициализирована ли переменная

        If IsEmpty(LResult) = True Then

         MsgBox «Переменная не инициализирована.»

        End If

      End Sub

      В этом примере переменная с именем LResult была объявлена, но не была инициализирована значением. В результате функция ISEMPTY вернет true и отобразит сообщение «Переменная не инициализирована.»

      Переменная инициализирована

      Теперь мы изменим приведенный выше пример и инициализируем переменную LResult перед вызовом функции ISEMPTY.

      Sub TestVariable()

        Dim LResult

        ‘Инициализировать переменную с именем LResult

        LResult = «Google is simply the best search engine!»

        ‘Проверить, инициализирована ли переменная

        If IsEmpty(LResult) = True Then

         MsgBox «Переменная не инициализирована.»

        End If

      End Sub

      Поскольку переменная LResult теперь инициализирована значением «Google is simply the best search engine!», Функция ISEMPTY вернет false, и окно сообщения отображаться не будет.

       

      Подскажите как при помощи VBA определить наличие пустой ячейки (не заполненной = «» ;)  в диапазоне (например А1:С300) или ячейки с значением = 0 ?

       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

      Нашли, дальше что? Перебрать диапазон/массив и при нахождении пустой/нулевой выйти из цикла с сообщением.

       

      Антон

      Пользователь

      Сообщений: 617
      Регистрация: 01.01.1970

      #3

      28.01.2014 01:20:21

      посредством перебора каждого значения массива и сравнением )

      Код
      'перебираем строки 
      For i=1 to 300 
      'перебираем столбцы 
      For y=1 to 3 
      If cells(i,y).Value="" then 
      Msgbox("пустая ячейка") 
      Exit for
      End if 
      If cells(i,y).Value=0 then 
      Msgbox("нуль.")  
      Exit for 
      End if    
      Next y   
      Next i

      Изменено: Антон28.01.2014 01:25:02

       

      Да, если такие ячейки имеются вывести сообщение и прекратить дальнейшее выполнение макроса, если таких ячеек нет продолжить выполнение макроса.

       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

      #5

      28.01.2014 01:28:51

      Код
      Sub Test()
      Dim Rng As Range, rCell As Range
          Set Rng = Range("A1:C300")
          For Each rCell In Rng
              If IsEmpty(rCell) Or rCell = 0 Then
                  MsgBox "Найдено в ячейке " & rCell.Address(0, 0), 64, "Для сведения"
                  Exit For
              End If
          Next
      End Sub 
       
       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

      #7

      28.01.2014 02:01:36

      Без цикла, но и без адресов:

      Код
      Sub Test2()
      Dim Rng As Range
          Set Rng = Range("A1:C300")
          x = Application.WorksheetFunction.CountA(Rng)
          y = Application.WorksheetFunction.CountIf(Rng, 0)
          If Rng.Cells.Count <> x Then MsgBox "Есть пустые."
          If y > 0 Then MsgBox "Есть нули."
      End Sub 
       

      KuklP

      Пользователь

      Сообщений: 14868
      Регистрация: 21.12.2012

      E-mail и реквизиты в профиле.

      Я сам — дурнее всякого примера! …

       

      Max.il

      Пользователь

      Сообщений: 64
      Регистрация: 05.12.2018

      Юрий М, Юрий, добрый вечер. Развивая тему, если нужно проверить несколько ячеек, к примеру А3, Т16 и Т22, если они пустые — залить эту ячейку красным цветом. Если в ней есть что-то , пропустить. Если во всех ячейках есть данные, то просто прекратить выполнение макроса без вывода сообщения.
      Спасибо  

       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

       

      Max.il

      Пользователь

      Сообщений: 64
      Регистрация: 05.12.2018

      Юрий М,Нет, т.к. проверка должна осуществляться после макроса.  

       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

      УФ сработает и после макроса. А макрос написать не смогу: нет у меня файла, где имеются перечисленные Вами ячейки ))
      Вы бы уточнили: три ячейки — это только для примера? А по факту? И как макрос должен понять, какие именно ячейки проверять? Где-то есть список этих ячеек?

       

      Юрий М

      Модератор

      Сообщений: 60578
      Регистрация: 14.09.2012

      Контакты см. в профиле

      #13

      27.05.2019 23:32:23

      Нет ответа…

      Код
      Dim rCell As Range
          For Each rCell In Range("A3, T16, T22")
              If rCell = "" Then
                  rCell.Interior.ColorIndex = 3
              Else
                  rCell.Interior.ColorIndex = xlNone
              End If
          Next
      
       

      RAN

      Пользователь

      Сообщений: 7091
      Регистрация: 21.12.2012

      #14

      27.05.2019 23:39:10

      Цитата
      Max.il написал:
      к примеру
      Код
      Sub qq()
          Dim r As Range
          Set r = [a1:c3]
          On Error Resume Next
          r.SpecialCells(4).Interior.ColorIndex = 3
      End Sub
       

      Max.il

      Пользователь

      Сообщений: 64
      Регистрация: 05.12.2018

      RAN,  Юрий М, Мужчины, спасибо, что помогаете . Искренняя благодарность.  

       

      Николай Китаев

      Пользователь

      Сообщений: 2
      Регистрация: 01.01.1970

      #16

      17.12.2021 13:26:01

      Цитата
      написал:
      Подскажите как при помощи VBA определить наличие пустой ячейки

      Такая конструкция не работает: If cells(i,y).Value=»» then….

      А так — должно работать:
      If IsEmpty(cells(i,y).Value) = True Then ……., где К — переменная содержащая или несодержащая значение, или переменная, содержащая адрес ячейки Cell, которую проверяем.

      Изменено: Николай Китаев17.12.2021 14:07:17

       

      Jack Famous

      Пользователь

      Сообщений: 10848
      Регистрация: 07.11.2014

      OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

      Николай Китаев, с момента создания темы прошло почти 8 лет, а ТС был последний раз почти 2 года назад — в курсе?  :D

      Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

       

      Ничего страшного. Можно считать, что памятка для себя. Тем более проверка вида cells(i,y).Value=»» не работает.

       

      БМВ

      Модератор

      Сообщений: 21380
      Регистрация: 28.12.2016

      Excel 2013, 2016

      #19

      17.12.2021 14:19:40

      Цитата
      Николай Китаев написал:
      Тем более проверка вида cells(i,y).Value=»» не работает.

      докажите.

      По вопросам из тем форума, личку не читаю.

       

      Jack Famous

      Пользователь

      Сообщений: 10848
      Регистрация: 07.11.2014

      OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

      Если вас что-то не устраивает, то не нужно поднимать со дна старую тему, тем более, что спросить автора не получится — создайте свою и там всё подробно опишите и/или спросите

      И тут гляньте:

      VBA. UDF. Функция для проверки значения на строку нулевой длины «=»»»

      Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

       

      vikttur

      Пользователь

      Сообщений: 47199
      Регистрация: 15.09.2012

      #21

      17.12.2021 23:29:31

      Цитата
      Николай Китаев написал: If IsEmpty(cells(i,y).Value) = True Then ……., где К — переменная

      И где К? )

      Понравилась статья? Поделить с друзьями:
    • Если ячейка не пустая в 2007 excel
    • Если ячейка имеет имя то в excel
    • Если ячейка заполнена то 1 если нет то 0 excel
    • Если ячейка в excel содержит знач то это означает что
    • Если ячейка в excel больше или равна