2014-02-27 10 views
17

У меня проблема с этим - мне приходится обнаруживать горизонтально и вертикально объединенные ячейки из таблицы excel. Я должен хранить первые сотовые координаты и длину объединенной области. Я прохожу через таблицу с двумя циклами, по очереди.Обнаружение объединенных ячеек в VBA Excel с MergeArea

Как я могу использовать свойство MergeArea для обнаружения объединенных и не связанных областей? Если ячейка не сливались, то, вероятно, следует возвращать пустой диапазон, однако, это:

«Если currentRange ничего после этого»

не работает вообще. Есть идеи? Большое спасибо.

+2

Во-первых, почему бы не обновить свой вопрос с помощью действительного кода, на который у вас есть вопросы? Если ячейка * не * слита, то mergearea по-прежнему возвращает диапазон с одной ячейкой, поэтому вы не можете просто проверить «If Not c.MergeArea Is Nothing». Вам нужно проверить количество строк/столбцов, и вы можете найти верхнюю левую ячейку, используя 'c.MergeArea.Cells (1)' –

ответ

59

Для этого есть несколько полезных битов кода.

Поместите курсор в слиты клетки и задать эти вопросы в Immidiate Window:

Является ли ActiveCell объединенной ячейки?

? Activecell.Mergecells 
True 

Сколько клеток слито?

? Activecell.MergeArea.Cells.Count 
2 

Сколько столбцов объединено?

? Activecell.MergeArea.Columns.Count 
2 

Сколько строк объединено?

? Activecell.MergeArea.Rows.Count 
    1 

Что такое адрес объединенного диапазона?

? activecell.MergeArea.Address 
    $F$2:$F$3 
+7

+1 «Mergecells» - это новое для меня –

+1

хороший отзыв. Спасибо за помощь. –

+1

в соответствии с [msdn] (https://msdn.microsoft.com/en-us/library/office/ff822300 (v = office.15) .aspx) свойство MergeArea возвращает сам объект диапазона, если он не является ** в объединенной области. Таким образом, вы должны иметь возможность использовать MergeArea без необходимости сначала проверять MergeCells. Работает в моем коде. – Rossco

Смежные вопросы