Не совсем понятна задача.
Проверить, объединена ли ячейка с другой (другими):
If Worksheets("Лист1").Cells(1, 3).MergeCells Then MsgBox "Таки да!"
При объединении значение ячеек, кроме левой верхней, теряются. В таком случае для создания списка для ComboBox не обязательно проверять, объединены ли ячейки, достаточно проверить ячейки на наличие данных. Код, создающий список элемента формы:
Private Sub UserForm_Initialize()
Dim Rng As Range
Dim n
' создать выпадающий список
With Worksheets("Лист1")
Set Rng = .Range("C1:H4") ' присвоить переменной диапазон "шапки" таблицы
End With
' цикл по ячейкам
For Each n In Rng.Value
If n <> "" Then ' если в ячейке есть данные
Me.ComboBox1.AddItem n ' добавить строку в список
End If
Next n
End Sub
P.S. В расчетных таблицах старайтесь по возможности не объединять ячейки, могут быть проблемы с вычислениями.
0 / 0 / 0 Регистрация: 02.03.2012 Сообщений: 5 |
|
1 |
|
Как узнать объединены ли ячейки20.03.2012, 11:55. Показов 25586. Ответов 2
Здравствуйте. Помогите пожалуйста. Как определить объединены ли ячейки.
0 |
15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
|
20.03.2012, 12:05 |
2 |
cell.mergecells — входит в объединение или нет, true/false
0 |
0 / 0 / 0 Регистрация: 02.03.2012 Сообщений: 5 |
|
20.03.2012, 13:25 [ТС] |
3 |
cell.mergecells — входит в объединение или нет, true/false спасибо а можно в коде показать? Добавлено через 32 минуты
0 |
I’m having quite an issue with this one — I have to detect horizontally and vertically merged cells from an excel table. I have to store the first cell coords, and the lenght of the merged area. I iterate through the table with two for-cycles, line by line.
How can I use MergeArea property to detect the merged and non-merged areas?
If the cell is not merged, it should probably return empty range, however, this:
«If currentRange Is Nothing Then»
is not working at all. Any ideas?
Thanks a lot.
asked Feb 27, 2014 at 17:32
ziraelzirael
3931 gold badge3 silver badges4 bronze badges
1
2 Answers
There are several helpful bits of code for this.
Place your cursor in a merged cell and ask these questions in the Immidiate Window:
Is the activecell a merged cell?
? Activecell.Mergecells
True
How many cells are merged?
? Activecell.MergeArea.Cells.Count
2
How many columns are merged?
? Activecell.MergeArea.Columns.Count
2
How many rows are merged?
? Activecell.MergeArea.Rows.Count
1
What’s the merged range address?
? activecell.MergeArea.Address
$F$2:$F$3
answered Feb 27, 2014 at 18:05
tburtbur
2,3741 gold badge13 silver badges12 bronze badges
1
While working with selected cells as shown by @tbur can be useful, it’s also not the only option available.
You can use Range() like so:
If Worksheets("Sheet1").Range("A1").MergeCells Then
Do something
Else
Do something else
End If
Or:
If Worksheets("Sheet1").Range("A1:C1").MergeCells Then
Do something
Else
Do something else
End If
Alternately, you can use Cells():
If Worksheets("Sheet1").Cells(1, 1).MergeCells Then
Do something
Else
Do something else
End If
answered May 1, 2018 at 3:09
David MetcalfeDavid Metcalfe
2,1471 gold badge27 silver badges43 bronze badges
@spark36
Полная комплектация: 2 руки, 2 ноги, голова, мозги
Как проверить диапазон ячеек объединен или нет?
Получаю в методе диапазон ячеекExcel.Range cells = ws.Range[start, end];
Как можно проверить объединен ли он в одну ячейку или нет?
-
Вопрос заданболее трёх лет назад
-
586 просмотров
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@honor8
Принципы быстродействия VBA в описании
Если нужно проверить, объединена ли ячейка B1 с другими в один диапазон, то для VBA код будет:
merge = Cells(1, 2).MergeArea.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Комментировать
Похожие вопросы
-
Показать ещё
Загружается…
14 апр. 2023, в 19:53
3500 руб./за проект
14 апр. 2023, в 19:53
10000 руб./за проект
14 апр. 2023, в 19:46
1000 руб./в час
Минуточку внимания
I have an Excel document that contains duty shifts. I would like to findout if there is any merged cells like given below withing given range..
How can I determine the cells are filled in given range or the cells are merged in given range?
If IsEmpty(Range("NewRange")) = False Then
z = z + 1 'My counter
End If
I tried IsEmpty Function but it doesnt work correctly on merged cells. You can try but the result is same.. While I got a block of empty cells there it counts as filled..
asked Feb 12, 2015 at 14:10
Berker YüceerBerker Yüceer
6,98618 gold badges67 silver badges102 bronze badges
1