МЕНЮ САЙТА
КАТЕГОРИИ РАЗДЕЛА ОПРОСЫ |
Определить пустая ячейка или нет
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ] |
Via VBA how can I check if a cell is empty from another with specific information?
For example:
If A:A = «product special» And B:B is null Then
C1 = «product special»
Additionally, how can I use a For Each
loop on theRange
and how can I return the value in the other cell?
asked Nov 13, 2012 at 12:19
Regis SantosRegis Santos
3,3998 gold badges41 silver badges64 bronze badges
0
You could use IsEmpty()
function like this:
...
Set rRng = Sheet1.Range("A10")
If IsEmpty(rRng.Value) Then ...
you could also use following:
If ActiveCell.Value = vbNullString Then ...
answered Nov 13, 2012 at 12:40
1
IsEmpty()
would be the quickest way to check for that.
IsNull()
would seem like a similar solution, but keep in mind Null has to be assigned to the cell; it’s not inherently created in the cell.
Also, you can check the cell by:
count()
counta()
Len(range("BCell").Value) = 0
answered Nov 13, 2012 at 12:52
DeafdanDeafdan
3932 silver badges13 bronze badges
This site uses the method isEmpty()
.
Edit: content grabbed from site, before the url will going to be invalid.
Worksheets("Sheet1").Range("A1").Sort _
key1:=Worksheets("Sheet1").Range("A1")
Set currentCell = Worksheets("Sheet1").Range("A1")
Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If nextCell.Value = currentCell.Value Then
currentCell.EntireRow.Delete
End If
Set currentCell = nextCell
Loop
In the first step the data in the first column from Sheet1 will be sort.
In the second step, all rows with same data will be removed.
answered Nov 13, 2012 at 12:23
ReporterReporter
3,8495 gold badges32 silver badges46 bronze badges
Подскажите как при помощи VBA определить наличие пустой ячейки (не заполненной = «» в диапазоне (например А1:С300) или ячейки с значением = 0 ? |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
Нашли, дальше что? Перебрать диапазон/массив и при нахождении пустой/нулевой выйти из цикла с сообщением. |
Антон Пользователь Сообщений: 617 |
#3 28.01.2014 01:20:21 посредством перебора каждого значения массива и сравнением )
Изменено: Антон — 28.01.2014 01:25:02 |
||
Да, если такие ячейки имеются вывести сообщение и прекратить дальнейшее выполнение макроса, если таких ячеек нет продолжить выполнение макроса. |
|
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#5 28.01.2014 01:28:51
|
||
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#7 28.01.2014 02:01:36 Без цикла, но и без адресов:
|
||
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
Я сам — дурнее всякого примера! … |
Max.il Пользователь Сообщений: 64 |
Юрий М, Юрий, добрый вечер. Развивая тему, если нужно проверить несколько ячеек, к примеру А3, Т16 и Т22, если они пустые — залить эту ячейку красным цветом. Если в ней есть что-то , пропустить. Если во всех ячейках есть данные, то просто прекратить выполнение макроса без вывода сообщения. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
|
Max.il Пользователь Сообщений: 64 |
Юрий М,Нет, т.к. проверка должна осуществляться после макроса. |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
УФ сработает и после макроса. А макрос написать не смогу: нет у меня файла, где имеются перечисленные Вами ячейки )) |
Юрий М Модератор Сообщений: 60588 Контакты см. в профиле |
#13 27.05.2019 23:32:23 Нет ответа…
|
||
RAN Пользователь Сообщений: 7091 |
#14 27.05.2019 23:39:10
|
||||
Max.il Пользователь Сообщений: 64 |
RAN, Юрий М, Мужчины, спасибо, что помогаете . Искренняя благодарность. |
Николай Китаев Пользователь Сообщений: 2 |
#16 17.12.2021 13:26:01
Такая конструкция не работает: If cells(i,y).Value=»» then…. А так — должно работать: Изменено: Николай Китаев — 17.12.2021 14:07:17 |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Николай Китаев, с момента создания темы прошло почти 8 лет, а ТС был последний раз почти 2 года назад — в курсе? Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Ничего страшного. Можно считать, что памятка для себя. Тем более проверка вида cells(i,y).Value=»» не работает. |
|
БМВ Модератор Сообщений: 21385 Excel 2013, 2016 |
#19 17.12.2021 14:19:40
докажите. По вопросам из тем форума, личку не читаю. |
||
Jack Famous Пользователь Сообщений: 10852 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Если вас что-то не устраивает, то не нужно поднимать со дна старую тему, тем более, что спросить автора не получится — создайте свою и там всё подробно опишите и/или спросите И тут гляньте: VBA. UDF. Функция для проверки значения на строку нулевой длины «=»»» Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
vikttur Пользователь Сообщений: 47199 |
#21 17.12.2021 23:29:31
И где К? ) |
||
Определение с помощью кода VBA Excel, что диапазон ячеек пуст, то есть, ни одна из ячеек диапазона (строки, столбца) не содержит отображаемого значения.
Определение пустого диапазона
Определить в VBA Excel, что диапазон ячеек пуст, можно с помощью функции рабочего листа WorksheetFunction.CountA или свойства диапазона ячеек Range.Text.
Пример 1
Определение, что диапазон ячеек пуст, с помощью функции рабочего листа WorksheetFunction.CountA:
Sub Primer1() If WorksheetFunction.CountA(Range(«A1:L8»)) = 0 Then MsgBox «Диапазон ячеек ««A1:L8»» пуст» Else MsgBox «Диапазон ячеек ««A1:L8»» не пуст» End If End Sub |
Функция WorksheetFunction.CountA подсчитывает количество ячеек, содержащих значения, в том числе нули и формулы, возвращающие пустые строки. Если хотя бы одна ячейка в диапазоне будет содержать пустую строку, возвращенную формулой, то код первого примера определит, что диапазон не пуст.
Пример 2
Определение, что диапазон ячеек пуст, с помощью свойства Text объекта Range:
Sub Primer2() If Range(«A1:L8»).Text = «» Then MsgBox «Диапазон ячеек ««A1:L8»» пуст» Else MsgBox «Диапазон ячеек ««A1:L8»» не пуст» End If End Sub |
Свойство Text объекта Range возвратит пустую строку только в том случае, если все ячейки диапазона будут содержать пустые строки и (или) значение Empty. Если одна или более ячеек в диапазоне будут содержать пустую строку, возвращенную формулой, то код второго примера все-равно определит, что диапазон пуст.
Определение пустой строки
Определение пустой строки в VBA Excel с помощью свойства Range.Text:
Sub Primer3() If Rows(5).Text = «» Then MsgBox «Указанная строка пуста» Else MsgBox «Указанная строка не пуста» End If End Sub |
Данное определение пустой строки используется в коде для удаления пустых строк из таблицы.
Определение пустого столбца
Определение пустого столбца в VBA Excel с помощью свойства Range.Text:
Sub Primer4() If Columns(7).Text = «» Then MsgBox «Указанный столбец пуст» Else MsgBox «Указанный столбец не пуст» End If End Sub |
или
Sub Primer5() If Columns(«G»).Text = «» Then MsgBox «Указанный столбец пуст» Else MsgBox «Указанный столбец не пуст» End If End Sub |
Фразы для контекстного поиска: диапазон пустой, строка пустая, столбец пустой.
Nom_1
is the name of a cell in my worksheet, and is used in the following code.
Someimes that cell is left empty and I don’t want the NormInv
function to get called because it will return an error if the inputs are empty.
I get the error: Unable to get the NormInv property of the WorksheetFunction class
This leads me to believe my if statement is incorrect and it is allowing for the code to enter and execute even if Nom_1
is empty.
If Not IsEmpty(Nom_1) Then
internal_1 = Application.WorksheetFunction.NormInv(Rnd(), N_1, Std_1)
End If
Am I correctly checking if the cell is empty?
tweray
98110 silver badges18 bronze badges
asked Jun 27, 2014 at 18:17
3
Just Expanding on Barranka’s comment,
You need to make sure all cells with the names Nom_1
,N_1
,Std_1
,internal_1
exist in the workbook
then use Range("Nom_1")
instead of Nom_1
Sub MyNormInv()
If Not IsEmpty(Range("Nom_1")) Then
Range("internal_1") = Application.WorksheetFunction.NormInv(Rnd(), Range("N_1"), Range("Std_1"))
End If
End Sub
answered Jun 27, 2014 at 18:34
Ravi YenuguRavi Yenugu
3,8975 gold badges40 silver badges58 bronze badges
1
You could use
If Range(Nom_1).Value <> vbNullString Then
internal_1 = Application.WorksheetFunction.NormInv(Rnd(), N_1, Std_1)
End If
However, know that this will return False if you have a formula returning a zero length string in the cell. Even though the cell is not «empty» it will still be seen as blank because the value is «».
answered Jun 27, 2014 at 18:39
asp8811asp8811
7838 silver badges14 bronze badges
1