Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск объединённых ячеек. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск объединённых ячеек. (Макросы/Sub)
Поиск объединённых ячеек.
Roman777 Дата: Вторник, 02.06.2015, 10:13 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Подскажите, пожалуйста, каким образом можно искать объединённые ячейки (или проверить, есть ли объединённые ячейки) и, допустим, выделить все объединённые ячейки?


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Подскажите, пожалуйста, каким образом можно искать объединённые ячейки (или проверить, есть ли объединённые ячейки) и, допустим, выделить все объединённые ячейки?

Автор - Roman777
Дата добавления - 02.06.2015 в 10:13
KSV Дата: Вторник, 02.06.2015, 10:18 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
или проверить, есть ли объединённые ячейки


[p.s.]не, так он их все объединит...


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Вторник, 02.06.2015, 10:34
 
Ответить
Сообщение
или проверить, есть ли объединённые ячейки


[p.s.]не, так он их все объединит...

Автор - KSV
Дата добавления - 02.06.2015 в 10:18
SLAVICK Дата: Вторник, 02.06.2015, 10:31 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
Вот:
[vba]
Код
Sub Макрос1()
Dim r As Range, r1 As Range, s$, b As Boolean
Set r1 = Selection
       For Each r In r1
           b = r.MergeCells
           If b Then s = s & r.Address & "|"
       Next

       If Len(s) > 0 Then
           s = Left(s, Len(s) - 1)
           Range(Join(Split(s, "|"), " ,")).Select
       End If
End Sub
[/vba]
Выделит все обедененные ячейки в выделенном диапазоне

ЗЫ
Для правильности - нужно бы использовать словарь с добавлением "mergearea"(файл 2):
[vba]
Код
Sub Макрос2()
Dim r As Range, r1 As Range, s$, b As Boolean, dic As Object
Set dic = CreateObject("Scripting.Dictionary")
Set r1 = Selection
     For Each r In r1
         b = r.MergeCells
         If b Then If Not dic.Exists(r.MergeArea.Address) Then dic.Add r.MergeArea.Address, r.MergeArea.Address
         If b Then s = s & r.Address & "|"
     Next

     If dic.Count > 0 Then
         Range(Join(dic.keys, " ,")).Select
     End If
End Sub
[/vba]
К сообщению приложен файл: 4581807.xlsm (17.4 Kb) · 1340519.xlsm (19.9 Kb)


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICK - Вторник, 02.06.2015, 10:42
 
Ответить
СообщениеВот:
[vba]
Код
Sub Макрос1()
Dim r As Range, r1 As Range, s$, b As Boolean
Set r1 = Selection
       For Each r In r1
           b = r.MergeCells
           If b Then s = s & r.Address & "|"
       Next

       If Len(s) > 0 Then
           s = Left(s, Len(s) - 1)
           Range(Join(Split(s, "|"), " ,")).Select
       End If
End Sub
[/vba]
Выделит все обедененные ячейки в выделенном диапазоне

ЗЫ
Для правильности - нужно бы использовать словарь с добавлением "mergearea"(файл 2):
[vba]
Код
Sub Макрос2()
Dim r As Range, r1 As Range, s$, b As Boolean, dic As Object
Set dic = CreateObject("Scripting.Dictionary")
Set r1 = Selection
     For Each r In r1
         b = r.MergeCells
         If b Then If Not dic.Exists(r.MergeArea.Address) Then dic.Add r.MergeArea.Address, r.MergeArea.Address
         If b Then s = s & r.Address & "|"
     Next

     If dic.Count > 0 Then
         Range(Join(dic.keys, " ,")).Select
     End If
End Sub
[/vba]

Автор - SLAVICK
Дата добавления - 02.06.2015 в 10:31
AndreTM Дата: Вторник, 02.06.2015, 10:40 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Например, так (предварительно выделите диапазон для поиска):
[vba]
Код
Sub test()
     Set ma = Nothing
     For Each cell In Selection
         If cell.MergeCells Then
             If ma Is Nothing Then
                 Set ma = cell
             Else
                 Set ma = Union(ma, cell.MergeArea)
             End If
         End If
     Next
     If Not ma Is Nothing Then ma.Select
End Sub
[/vba]


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
СообщениеНапример, так (предварительно выделите диапазон для поиска):
[vba]
Код
Sub test()
     Set ma = Nothing
     For Each cell In Selection
         If cell.MergeCells Then
             If ma Is Nothing Then
                 Set ma = cell
             Else
                 Set ma = Union(ma, cell.MergeArea)
             End If
         End If
     Next
     If Not ma Is Nothing Then ma.Select
End Sub
[/vba]

Автор - AndreTM
Дата добавления - 02.06.2015 в 10:40
Roman777 Дата: Вторник, 02.06.2015, 14:48 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Извиняюсь за задержку в ответе. Всем ответившим, спасибо большое!!! Помогли очень.


Много чего не знаю!!!!
 
Ответить
СообщениеИзвиняюсь за задержку в ответе. Всем ответившим, спасибо большое!!! Помогли очень.

Автор - Roman777
Дата добавления - 02.06.2015 в 14:48
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск объединённых ячеек. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!