Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/34: Рейтинг темы: голосов - 34, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 05.05.2006
Сообщений: 11
1

Нужно проверить объединены ли ячейки?

25.06.2006, 00:35. Показов 6200. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ячейка может не входить в объединение ячеек, может быть объединена с соседними. Например, ячейка А1 может быть объединена с ячейками B1 и C1, еще может быть обединена с ячейками B1, C1, D1 и E1, а может и не входить в объединение.. как это проверить?? в последствии необходимо задать условие, что если объединена с B1 и C1, то делаем то-то, а если с B1, C1, D1 и E1 - то то-то..
Здесь надо использовать свойства MergeCells или нет??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2006, 00:35
Ответы с готовыми решениями:

Как узнать объединены ли ячейки
Здравствуйте. Помогите пожалуйста. Как определить объединены ли ячейки. Задача такая перебирая...

Объединение ячеек без потери данных, если объединены ячейки в столбце рядом
Здравствуйте! Есть таблица из двух столбцов, в столбце "А" часть ячеек объединена, нужно...

Проверить существование файла. Проверить содержание ячейки
Уважаемые программисты я только начинаю тернистый путь, так что извините если вопросы не корректны....

N разных станков объединены в конвейер.
N разных станков об*еденены в конвеэр. Есть N работников. Задана матрица C, где C продуктивность...

5
0 / 0 / 0
Регистрация: 05.05.2006
Сообщений: 11
25.06.2006, 01:08  [ТС] 2
Поэкспериментировал и получилось сделать вот так вот..
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Set mb = Range("a15")
Set ma = Range("a1").MergeArea
If ma.Address = "$A$1" Then
    mb.Value = "months"
Else
    If ma.Address = "$A$1:$C$1" Then
    mb.Value = "quartals"
    Else
        If ma.Address = "$A$1:$L$1" Then
        mb.Value = "years"
        Else
        mb.Value = "months"
        End If
    End If
End If
Но у меня проблема возникла, я не могу задать Range через Range(cells (1, 1), пишет ошибку.. а мне именно так надо, потому что я адрес ячейки передаю переменной.
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
25.06.2006, 08:15 3
<A class=SmlBoldLinks id=ctl03_ctlTopic_ctlPanelBar_ctlTopicsRepeater_ctl06_smAuthorName onmouseover="window.status = window.location;return true;" title="View VladDudka's Profile..." onmouseout="window.status=''return true;" href="void(''); VladDudka,
Все-таки непонятно, что именно именно так надо и для чего, и в какой строке ошибка.
VladConn
0
0 / 0 / 0
Регистрация: 05.05.2006
Сообщений: 11
25.06.2006, 19:13  [ТС] 4
У меня есть две переменных
Visual Basic
1
2
3
4
Dim wcnt1 As Integer
Dim wcnt2 As Integer
wcnt1 = 1
wcnt2 = 5
И надо сделать вот так вот
If cells (wcnt1, 1) не объединена ни с одной ячейкой then
ячейке (wcnt2, 15) присваивается значение "months"
If cells (wcnt1, 1) объединена с ячейками (wcnt1+1, 1) и (wcnt1+2, 1) then
ячейке (wcnt2, 15) присваивается значение "quartals"
ну и если она объединена с 1 по 12 ячейки, то значение - год...
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
26.06.2006, 09:10 5
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Private Sub CommandButton1_Click()
    SetPeriods 1, 5, 1, 15, 3, 12, 1
End Sub
Private Sub SetPeriods(ByVal plngRowOne As Long, _
                       ByVal plngRowTwo As Long, _
                       ByVal pintColumnOne As Integer, _
                       ByVal pintColumnTwo As Integer, _
                       ByVal pintMergedCountOne As Integer, _
                       ByVal pintMergedCountTwo As Integer, _
                       ByVal pintWSheet As Integer)
    Dim objCellOne As Range
    Dim objCellTwo As Range
    Dim objMergedRange As Range
    Dim objWSheet As Worksheet
        
    Set objWSheet = ThisWorkbook.Worksheets(pintWSheet)
    Set objCellOne = objWSheet.Cells(plngRowOne, pintColumnOne)
    Set objCellTwo = objWSheet.Cells(plngRowTwo, pintColumnTwo)
    
    If Not objCellOne.MergeCells Then
        objCellTwo.Value = "Months"
    Else
        Set objMergedRange = objCellOne.MergeArea
        Select Case True
            Case objMergedRange.Column = pintColumnOne And objMergedRange.Row = plngRowOne And objMergedRange.Rows.Count = pintMergedCountOne
                objCellTwo.Value = "Quarters"
            Case objMergedRange.Column = pintColumnOne And objMergedRange.Row = plngRowOne And objMergedRange.Rows.Count = pintMergedCountTwo
                objCellTwo.Value = "Year"
        End Select
    End If
        
    Set objWSheet = Nothing
    Set objCellOne = Nothing
    Set objCellTwo = Nothing
    Set objMergedRange = Nothing
    
End Sub
0
14 / 14 / 2
Регистрация: 23.03.2010
Сообщений: 635
26.06.2006, 22:14 6
Что-то я не понял, какие ячейки у тебя объединяются: в строке 1 или в столбце 1 ? Из первого описания - вроде бы в строке... Впрочем, неважно: в любом случае, наверное, надо сосчитать кол-во объединённых ячеек? Тогда так:
Visual Basic
1
2
3
4
5
6
7
Dim oMyCell As Range
Set oMyCell = Cells(5, 15)
Select Case Cells(1, 1).MergeArea.Count
    Case 1: oMyCell = "Month"
    Case 3: oMyCell = "Quarter"
    Case 12: oMyCell = "Year"
End Select
Дополнительно, для предотвращения ошибки, можно проверить MergeArea на кол-во содержащихся строк или столбцов (Cells(1, 1).MergeArea.Rows.Count).
0
26.06.2006, 22:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.06.2006, 22:14
Помогаю со студенческими работами здесь

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

Получение коллекций из элементов коллекции, которые будут объединены по какому-то свойству
Здравствуйте. Подскажите новичку. Есть коллекция элементов с определенными свойствами. Как можно...

Проверить ячейки на значение
Ребята помогите найти решение простой задаче (у меня она не решается). Нужно проверить ячейки на...

Проверить значение части ячейки
Здравствуйте. Такой вопрос, есть ячейка содержащия в себе информацию. обычно это 566556...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru