#excel #vba
#excel #vba
Вопрос:
Я выполняю упражнение в колледже, и мне нужно проверить, являются ли некоторые конкретные ячейки пустыми. Если они пустые, мне нужно что-то написать в них. Я пытался создать одну программу, но она не работала, показывая мне ошибку: 13.
Вот мой код:
Option Explicit
Sub Test()
If Range("a1:e1").Value = "" Then
Range("a1:e1") = "x"
End If
End Sub
Спасибо за помощь!
Ответ №1:
Если диапазон содержит 1 ячейку, то его .Value
свойство возвращает одно скалярное значение. Однако, если диапазон содержит несколько ячеек, его .Value
свойство возвращает массив. Вы можете перебрать все ячейки в диапазоне, чтобы увидеть, все ли они пусты. В качестве альтернативы, вы могли бы использовать WorksheetFunction.CountBlank
, чтобы увидеть, соответствует ли количество пробелов в диапазоне количеству ячеек в диапазоне.
With Range("a1:e1")
If WorksheetFunction.CountBlank(.Cells) = .Cells.Count Then
Range("a1:e1") = "x"
End If
End With
Ответ №2:
Неясно, что вы хотите сделать, если одна ячейка в этом диапазоне не пуста.
Поскольку случай, когда вы хотите заполнить ячейки, если все они пустые, уже был рассмотрен, я рассмотрю случай, когда вы хотите проверить, есть ли в диапазоне пустые ячейки, и если да, то заполните их.
Dim cell As Range
For Each cell In Range("A1:E1").Cells
If cell.Value = "" Then
cell.Value = "x"
End If
Next cell
Ответ №3:
Вы также можете использовать WorksheetFunction.CountA
. Он подсчитывает непустые ячейки. Вот так:
If WorksheetFunction.CountA(Range("a1:e1")) = 0 Then
Range("a1:e1") = "x"
End If
Он делает то же самое, что и код Жестянщика. Но проверка отличается.
Ответ №4:
Вы могли бы попробовать этот код:
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