Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2015, 18:37   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Проверка диапазона с объединенными ячейками по условию

Здравствуйте Уважаемые программисты!
Есть именованный диапазон "данные" (excel 2003), в котором есть объединенные ячейки. Подскажите пожалуйста, как проверить в этом диапазоне наличие пустых ячеек? Код ниже работает только с необъединенными ячейками. Спасибо!

Код:
For Each i In [данные]
   If i = "" Then
   MsgBox "есть пустые ячейки", vbInformation, "стоп": Exit Sub
   End If
Next
ольгаг вне форума Ответить с цитированием
Старый 13.12.2015, 18:57   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

код выше работает с каждой ячейкой именованного диапазона
а что хотите Вы?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.12.2015, 20:08   #3
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Если ячейка объединенная и в ней текст, то код все равно считает эту ячейку пустой. Т.е. надо чтобы код проверял если ячейка объединенная, то смотрел ее значение в крайней левой верхней ячейке, т.е. типа
Код:
MergeCells.Cells(0, 1)
и соответственно эту ячейку уже не считал пустой.
ольгаг вне форума Ответить с цитированием
Старый 13.12.2015, 20:23   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот и проверте:
если ячейка обьединенная, то проверяется только первая
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.12.2015, 20:26   #5
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо!
Подскажите еще пожалуйста, как можно изменить мой код с помощью функции:

Код:
Function Reference_cell_even_if_merged(Cell_Range As Range) As Range
If Cell_Range.MergeCells Then
    Set Reference_cell_even_if_merged = Cell_Range.MergeArea
Else
    Set Reference_cell_even_if_merged = Cell_Range
End If
End Function
ольгаг вне форума Ответить с цитированием
Старый 13.12.2015, 20:46   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

как с помощью предложенной функции изменить Ваш код - не знаю, потому что функция совершенно бесполезная.

а без функции так:
Код:
  Dim i As Range, check As Boolean
  For Each i In [данные]
    If i.MergeCells Then check = i.Address = i.MergeArea.Cells(1).Address Else check = True
    If check Then If IsEmpty(i) Then MsgBox "Empty": End
  Next
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.12.2015, 23:42   #7
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо большое!
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вставка столбца в таблицу с объединенными ячейками Jaroslav Microsoft Office Word 0 06.05.2014 17:30
Добавить строку в таблицу с объединенными ячейками Stilet Microsoft Office Word 3 03.08.2012 13:09
Проверка соприкосновений линии с ячейками массива Руслантус Помощь студентам 5 12.07.2012 08:31
Условное форматирование диапазона по условию alexsampler Microsoft Office Excel 19 12.09.2011 23:51
Работа с объединенными ячейками tae1980 Microsoft Office Excel 6 13.02.2009 22:25