Выполнить действие, если в диапазоне есть пустая строка - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д