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

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

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

всем доброго времени суток.подскажите пожалуйста , задача у меня такая: если в диапазоне А1:L10 есть пустая строка (в примере строка 6) то выполняем одной действие (например ячейка М1 красным выделяется) а если в этом же диапазоне (А1:L10) нет пустой строки то выполняем другое действие(N1 выделяется красным) я колупалась дошла до такого варианта(эксперементировала,пробовала выделить строку чтоб потом по подобию загнать условие в цикл if...Then ) но получилось выделить все пустые ЯЧЕЙКИ во всех строках. А мне нужна пустая СТРОКА. когда ввожу условие if ...then пишет ошибку type s mismatch. Вообщем мои изыскания завели меня в тупик - на них особо не обращайте внимания)

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

textual
Листинг программы
Sub correct()
Dim d1, d As Range
Dim dat1 As Date
Dim sh As Worksheet
Set sh = Sheets("Base")
With Workbooks("first.xlsx").Sheets("Лист1")
'поиск диапазонов
For t = 1 To 3
dat1 = sh.Cells(t, 1)
dat2 = sh.Cells(t + 1, 1)
dat3 = sh.Cells(4, 1)
Dim glastrow As Long
Dim g1 As Range
glastrow = .Cells.Find("*", [A1], SearchDirection:=xlPrevious).Row
Set g1 = .Range("e" & glastrow + 1)
Set d = .Columns(5).Find(dat1, , xlValues, xlWhole)
Set d1 = .Columns(5).Find(dat2, , xlValues, xlWhole)
If d Is Nothing Then: MsgBox "NO": Exit Sub
If d1 Is Nothing Then Set d1 = g1
For i = d.Row + 1 To d1.Row - 1 ' цикл проверки ячейки по столбцу 5 от строки с датой до строки со второй датой i строка 5 -столбец
If .Cells(i, 5) = "" Then ' если ячейка пустая  то
.Range(.Cells(d.Row + 1, "a"), .Cells(i - 1, "b")) = dat1 ' в диапазоне до пустой ячейки в ячейку А и B этой строки записываю дату 1
.Range(.Cells(i + 1, "a"), .Cells(d1.Row - 1, "a")) = dat3 ' в диапазоне после пустой ячейки в ячейку А этой строки записываю дату 3
.Range(.Cells(i + 1, "b"), .Cells(d1.Row - 1, "b")) = dat1 ' в диапазоне после пустой ячейки в ячейку  B этой строки записываю дату 3
GoTo metka1 ' перехожу к проверке следующего блока
Else:  ' если проверяемая ячейка по столбцу 5 не пустая то 
.Cells(i, "a") = dat3 'записываю дату3 в столбец А
.Cells(i, "b") = dat1 'записываю дату3 в столбец В
GoTo metka2 'перехожу на проверку следующей ячейки
End If
'если при проверке не будет пустых ячеек то в столбец А и В будет записываться по условию ELSE , а когда пустая ячейка попадется данные перезапишутся по условию then 
metka2: Next i
metka1: Next
End With
End Sub

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы