Показать сообщение, если в столбце есть пустые ячейки - PullRequest
0 голосов
/ 23 мая 2019

У меня есть основной (основной) лист, который составлен на основе других листов. После того, как все другие рабочие листы скопированы на мастер, мне нужно запустить код, который будет оценивать, в частности, 1 столбец, и мне нужно отобразить текстовое сообщение «Эй, у вас есть пустые ячейки в указанном столбце». Моя проблема в том, что столбец всегда имеет разное количество строк, поэтому я не могу жестко кодировать диапазон. Я также не забочусь о количестве пустых ячеек, но достаточно одного сообщения о том, что у вас есть пустые ячейки.

Я попробовал приведенный ниже код с намерением найти активный диапазон в моем столбце F, а затем, если он пуст, отобразить сообщение, но ничего.

Dim ABC22 As Long
With ActiveSheet
    ABC22 = .Cells(.Rows.Count, "F").End(xlUp).Row
    If IsEmpty("ABC22") = True Then
        MsgBox "Posting Key Column (F) contains empty cells"
    End If
End With

Ответы [ 3 ]

1 голос
/ 23 мая 2019

Можно упростить с помощью Evaluate и двух Ctrl + Вверх :

If [CountA(F:F)=0] Or Cells(Rows.Count, "F").End(xlUp).End(xlUp).Row > 1 Then

CountA(F:F) проверяет, является листолбец полностью пуст, и два Ctrl + Up проверяют, есть ли пустая ячейка перед последней непустой ячейкой.


В сторонуобратите внимание, Cells относится к активному листу, поэтому With ActiveSheet может быть удален или заменен конкретным листом:

With Sheet("Sheet name")
    If .Evaluate("CountA(F:F)=0") Or .Cells(.Rows.Count, "F").End(xlUp).End(xlUp).Row > 1 Then
1 голос
/ 23 мая 2019

Несколько способов сделать это, вот один:

Sub Test()
    With ActiveSheet
        Dim lastRow As Long
        lastRow = .Cells(.Rows.Count, "F").End(xlUp).Row

        If WorksheetFunction.CountBlank(.Range("F1:F" & lastRow)) > 0 Then
            MsgBox "Posting Key Column (F) contains empty cells"
        End If
    End With
End Sub
0 голосов
/ 23 мая 2019

Подсчитайте специальные ячейки.

    Sub CountBlanks()
    lastRow = Cells(Rows.Count, 6).End(xlUp).Row

    On Error GoTo ErrorHandler
    bCells = Range("F1:F" & lastRow).SpecialCells(xlCellTypeBlanks).Count
    MsgBox "There are " & bCells & " blank cells."
    Exit Sub

    ErrorHandler:
        MsgBox "There are no blank cells"
    End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...