Выполнить действие, если в диапазоне есть пустая строка - VBA

Узнай цену своей работы

Формулировка задачи:

всем доброго времени суток.подскажите пожалуйста , задача у меня такая: если в диапазоне А1:L10 есть пустая строка (в примере строка 6) то выполняем одной действие (например ячейка М1 красным выделяется) а если в этом же диапазоне (А1:L10) нет пустой строки то выполняем другое действие(N1 выделяется красным) я колупалась дошла до такого варианта(эксперементировала,пробовала выделить строку чтоб потом по подобию загнать условие в цикл if...Then ) но получилось выделить все пустые ЯЧЕЙКИ во всех строках. А мне нужна пустая СТРОКА. когда ввожу условие if ...then пишет ошибку type s mismatch. Вообщем мои изыскания завели меня в тупик - на них особо не обращайте внимания)
Листинг программы
  1. Sub uslovie pustaya stroka ()
  2. With Range("a1:L10")
  3. Dim ORANGE2 As Range
  4. Set ORANGE2 = .SpecialCells(xlCellTypeBlanks) 'здесь получается находит все пустые ЯЧЕЙКИ а мне нужна пустая СТРОКА
  5. if ORANGE2<>o then cells(1,13).Interior.Color = 255 else cells(1,14).interior.color=255 'этот цикл не работает
  6. End With
  7. End Sub

Решение задачи: «Выполнить действие, если в диапазоне есть пустая строка»

textual
Листинг программы
  1. Sub correct()
  2. Dim d1, d As Range
  3. Dim dat1 As Date
  4. Dim sh As Worksheet
  5. Set sh = Sheets("Base")
  6. With Workbooks("first.xlsx").Sheets("Лист1")
  7. 'поиск диапазонов
  8. For t = 1 To 3
  9. dat1 = sh.Cells(t, 1)
  10. dat2 = sh.Cells(t + 1, 1)
  11. dat3 = sh.Cells(4, 1)
  12. Dim glastrow As Long
  13. Dim g1 As Range
  14. glastrow = .Cells.Find("*", [A1], SearchDirection:=xlPrevious).Row
  15. Set g1 = .Range("e" & glastrow + 1)
  16. Set d = .Columns(5).Find(dat1, , xlValues, xlWhole)
  17. Set d1 = .Columns(5).Find(dat2, , xlValues, xlWhole)
  18. If d Is Nothing Then: MsgBox "NO": Exit Sub
  19. If d1 Is Nothing Then Set d1 = g1
  20. For i = d.Row + 1 To d1.Row - 1 ' цикл проверки ячейки по столбцу 5 от строки с датой до строки со второй датой i строка 5 -столбец
  21. If .Cells(i, 5) = "" Then ' если ячейка пустая  то
  22. .Range(.Cells(d.Row + 1, "a"), .Cells(i - 1, "b")) = dat1 ' в диапазоне до пустой ячейки в ячейку А и B этой строки записываю дату 1
  23. .Range(.Cells(i + 1, "a"), .Cells(d1.Row - 1, "a")) = dat3 ' в диапазоне после пустой ячейки в ячейку А этой строки записываю дату 3
  24. .Range(.Cells(i + 1, "b"), .Cells(d1.Row - 1, "b")) = dat1 ' в диапазоне после пустой ячейки в ячейку  B этой строки записываю дату 3
  25. GoTo metka1 ' перехожу к проверке следующего блока
  26. Else:  ' если проверяемая ячейка по столбцу 5 не пустая то
  27. .Cells(i, "a") = dat3 'записываю дату3 в столбец А
  28. .Cells(i, "b") = dat1 'записываю дату3 в столбец В
  29. GoTo metka2 'перехожу на проверку следующей ячейки
  30. End If
  31. 'если при проверке не будет пустых ячеек то в столбец А и В будет записываться по условию ELSE , а когда пустая ячейка попадется данные перезапишутся по условию then
  32. metka2: Next i
  33. metka1: Next
  34. End With
  35. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы