Как проверить, что диапазон пуст? - PullRequest
2 голосов
/ 12 апреля 2019

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

Вот мой код:

Option Explicit

Sub Test()

If Range("a1:e1").Value = "" Then
   Range("a1:e1") = "x"
End If

End Sub

Спасибо за помощь!

Ответы [ 4 ]

2 голосов
/ 12 апреля 2019

Если диапазон содержит 1 ячейку, то его свойство .Value возвращает единственное скалярное значение.Однако, если диапазон содержит несколько ячеек, его свойство .Value возвращает массив.Вы можете перебрать все ячейки в диапазоне, чтобы увидеть, все ли они пусты.В качестве альтернативы вы можете использовать WorksheetFunction.CountBlank, чтобы увидеть, соответствует ли количество пробелов в диапазоне количеству ячеек в диапазоне.

With Range("a1:e1")
    If WorksheetFunction.CountBlank(.Cells) = .Cells.Count Then
       Range("a1:e1") = "x"
    End If
End With
1 голос
/ 12 апреля 2019

Вы можете попробовать этот код:

Sub Test()
    Dim rng As Range
    Set rng = Range("A1:E1")
    ' if we come upon non-empty cell we exit sub and do nothing
    For Each cell In rng
        If Not IsEmpty(cell) Then Exit Sub
    Next
    ' if we reached this, all cells are empty
    rng.Value = "x"
End Sub
1 голос
/ 12 апреля 2019

Вы также можете использовать WorksheetFunction.CountA. Он считает непустые клетки. Как это:

If WorksheetFunction.CountA(Range("a1:e1")) = 0 Then
   Range("a1:e1") = "x"
End If

Он делает то же самое, что и код TinMan. Но проверка различна.

1 голос
/ 12 апреля 2019

Непонятно, что вы хотите сделать, если одна ячейка в этом диапазоне не пуста.

Поскольку случай, когда вы хотите заполнить ячейки , если они все не заполнены, уже покрыт, я расскажу о случае, когда вы хотите проверить, есть ли какие-либо пустые ячейки в диапазоне, и если да, тогда заполните их.

Dim cell As Range
For Each cell In Range("A1:E1").Cells
    If cell.Value = "" Then
        cell.Value = "x"
    End If
Next cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...