Страницы: 1
RSS
VBA определить наличие в диапазоне пустой ячейки или ячейки с значением - 0
 
Подскажите как при помощи VBA определить наличие пустой ячейки (не заполненной = "" ;)  в диапазоне (например А1:С300) или ячейки с значением = 0 ?
 
Нашли, дальше что? Перебрать диапазон/массив и при нахождении пустой/нулевой выйти из цикла с сообщением.
 
посредством перебора каждого значения массива и сравнением )
Код
'перебираем строки 
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
 
Да, если такие ячейки имеются вывести сообщение и прекратить дальнейшее выполнение макроса, если таких ячеек нет продолжить выполнение макроса.
 
Код
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 
 
Спасибо!!! то что надо!
 
Без цикла, но и без адресов:
Код
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 
 
Похожее, вчера:
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=53550&PAGEN_1=282
Я сам - дурнее всякого примера! ...
 
Юрий М, Юрий, добрый вечер. Развивая тему, если нужно проверить несколько ячеек, к примеру А3, Т16 и Т22, если они пустые - залить эту ячейку красным цветом. Если в ней есть что-то , пропустить. Если во всех ячейках есть данные, то просто прекратить выполнение макроса без вывода сообщения.
Спасибо  
 
А УФ не подойдёт?
 
Юрий М,Нет, т.к. проверка должна осуществляться после макроса.  
 
УФ сработает и после макроса. А макрос написать не смогу: нет у меня файла, где имеются перечисленные Вами ячейки ))
Вы бы уточнили: три ячейки - это только для примера? А по факту? И как макрос должен понять, какие именно ячейки проверять? Где-то есть список этих ячеек?
 
Нет ответа...
Код
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
 
Цитата
Max.il написал:
к примеру
Код
Sub qq()
    Dim r As Range
    Set r = [a1:c3]
    On Error Resume Next
    r.SpecialCells(4).Interior.ColorIndex = 3
End Sub
 
RAN,  Юрий М, Мужчины, спасибо, что помогаете . Искренняя благодарность.  
 
Цитата
написал:
Подскажите как при помощи VBA определить наличие пустой ячейки
Такая конструкция не работает: If cells(i,y).Value="" then....

А так - должно работать:
If IsEmpty(cells(i,y).Value) = True Then ......., где К - переменная содержащая или несодержащая значение, или переменная, содержащая адрес ячейки Cell, которую проверяем.
Изменено: Николай Китаев - 17.12.2021 14:07:17
 
Николай Китаев, с момента создания темы прошло почти 8 лет, а ТС был последний раз почти 2 года назад - в курсе?  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ничего страшного. Можно считать, что памятка для себя. Тем более проверка вида cells(i,y).Value="" не работает.
 
Цитата
Николай Китаев написал:
Тем более проверка вида cells(i,y).Value="" не работает.
докажите.
По вопросам из тем форума, личку не читаю.
 
Если вас что-то не устраивает, то не нужно поднимать со дна старую тему, тем более, что спросить автора не получится — создайте свою и там всё подробно опишите и/или спросите

И тут гляньте: VBA. UDF. Функция для проверки значения на строку нулевой длины «=""»
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Николай Китаев написал: If IsEmpty(cells(i,y).Value) = True Then ......., где К - переменная
И где К? )
Страницы: 1
Читают тему
Наверх