Страницы: 1
RSS
визуально пустая ячейка по факту не пустая. Определить, что в ней
 
Уважаемые форумчане.
Имею файл.
В нем по признаку "если ячейка в столбце А пустая", удаляю строки.
Файл создается из некоей внешней программы, поэтому сталкиваюсь с такой проблемой: ячейка, выглядящая пустой не удаляется, т.к. в ней, вероятно, что-то есть. Что это - определить не могу.
Во вложении - файл, где в столбце А ячейка А2 имеет это "нечто". В файле простой код, который не отрабатывает ячейку А2 пустой и, следовательно, не удаляет строку.

Прошу помощи. Что там и как "это" закодировать, чтобы строка удалялась.

Код
        For r = lastrow To 1 Step -1
            If Application.CountA(Cells(r, 1)) = 0 Then Rows(r).Delete
            If Application.CountA(Cells(r, 1)) = "" Then Rows(r).Delete
        Next r 
 
Вот что там:

 
Hugo, Да, но почему тогда моя

Код
If Application.CountA(Cells(r, 1)) = "" Then Rows(r).Delete 
не находит "это"? не так ссылаюсь?
 
Может удалять по условию "длинна строки = 0"?
 
Потому что это неразрывный пробел (alt + 0160), или (Ctr + Shift + пробел в Ворде), или(ChrW(&HA0) в VBA). Чтобы убедиться скопируйте искомый диапазон в Ворд и нажмите на знак параграфа для отображения скрытых знаков форматирования.
Чтобы удалить этот неразрывный пробел можно воспользоваться

Код
Activecell = Replace(Activecell.Value, ChrW(&HA0),"")
Изменено: Все_просто - 31.10.2014 23:48:57
С уважением,
Федор/Все_просто
 
Все_просто,да, какой-то непечатаемый символ. Правда, не удалось определить, какой
.Alexander88, спасибо! Помогло:
Код
If Len(Cells(r, 1)) = 0 Then Rows(r).Delete 
Похоже, закрыт вопрос. Спасибо большое всем, участвовавшим.
 
Цитата
all L пишет:
не так ссылаюсь?
Не так. Вы пытаетесь проверить, является ли результат функции CountA пустой строкой, чего не может быть по определению - результатом является число. Думаю, что If Cells (r, 1) = "" более правильная проверка.
Но проверка длины строки универсальнее
F1 творит чудеса
 
Цитата

Максим Зеленский пишет:
Думаю, что If Cells (r, 1) = "" более правильная проверка.
Мне кажется, что функция IsEmpty более верно, т.к. в ячейке м.б. формула, которая возвращает
пустое значение, а эта строка будет удалена
 
Цитата
Kuzmich пишет:
Мне кажется, что функция IsEmpty более верно
Проверяем:
Код
Sub TestEmpty()
    Cells(1, 1) = ""
    If Not IsEmpty(Cells(1, 1)) Then MsgBox "В ячейке что-то есть."
End Sub
 
 
Я говорил про формулу в ячейке А1, которая возвращает пустое значение,
а не просто присвоить Cells(1, 1) = ""
 
Про формулу понял, но у автора ведь
Цитата
all L пишет: Файл создается из некоей внешней программы
Страницы: 1
Наверх