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