Excel — поиск пустой ячейки в диапазоне

#excel #vba

#excel #vba

Вопрос:

Я пытаюсь найти способ поиска по диапазону ячеек в столбце электронной таблицы Excel, чтобы найти любые пустые ячейки. Столбец будет содержать «Заказанное количество», и если он останется пустым, то позже он выдает ошибки в другой системе. Если я смогу обнаружить ошибку сейчас, я могу пометить этот лист как сбойный, чтобы его можно было обработать вручную или запросить у клиента.

Я пробовал различные методы, но продолжаю либо получать сообщение об ошибке «Преобразование из типа ‘Object (,)’ в тип ‘String’ недопустимо», либо он просто игнорирует код.

Первый бит кода находит последнюю использованную строку на листе, поэтому следующий код просматривает только строку 2 столбца 8 до последней используемой строки столбца 8:

 Dim rw As Integer = 1
            Do Until xlNewWorkSheet.Cells(rw, 1).Value Is Nothing
                rw  = 1
            Loop
            Dim last As String = rw - 1
            'Dim quantity As String

            Dim xlRange As Excel.Range = Nothing
            xlRange = xlNewWorkSheet.Range(xlNewWorkSheet.Cells(2, 8), xlNewWorkSheet.Cells(last, 8))

            For Each qcell As Excel.Range In xlRange.Cells
                If qcell.Value <> "" Then
                    MsgBox("Empty value found in quantity...exiting...")
                End If
            Next
            With xlNewWorkSheet.Range("A1:Z100")
                'quantity = (.Range(.Cells(2, 8), .Cells(last, 8)).Value)
                'If quantity Is Nothing Then
                'MsgBox("Empty value found in quantity...exiting...")
                'Else
                .Range(.Cells(2, 1), .Cells(last, 1)).Value = (Cust   "_"   dt2)
                'End If

            End With
 

В идеале я хочу ввести дополнительную проверку строк и столбцов на наличие других аномалий, например, я иногда получаю электронные таблицы с #REF! в них так что удаление этих строк было бы здорово.

Заранее спасибо.

Комментарии:

1. Вы можете использовать SpecialCells свойство для диапазона, чтобы находить пустые ячейки без зацикливания, все сразу.

2. Привет, Дамиан. Как бы я использовал это в приведенном выше коде?

Ответ №1:

Просто то, что вы можете адаптировать. Подсчитайте, есть ли пустая ячейка. ЕСЛИ количество равно 0, значит, все в порядке. Если нет, что-то не так

 Sub test()
Dim rng As Range
Dim TotalBlanks As Long
TotalBlanks = 0
Set rng = Range("A1").CurrentRegion 'change this with your target range

On Error Resume Next
TotalBlanks = rng.SpecialCells(xlCellTypeBlanks).Count
On Error GoTo 0

If TotalBlanks > 0 Then
    'there is blanks, so do what you want and exit or end
    Debug.Print "There is blanks"
    End
End If

'rest of code if there is not a single blank
Debug.Print "Everything is ok"
Set rng = Nothing

End Sub
 

введите описание изображения здесь

Если я выполню приведенный выше код с предыдущим примером данных, я получу вывод введите описание изображения здесь

введите описание изображения здесь

Если я выполняю приведенный выше код с предыдущим примером данных, я получаю выводвведите описание изображения здесь, и он завершается

Комментарии:

1. Это сработало, спасибо. Я немного адаптировал его к моему текущему коду, но он справился со своей задачей