Правильно разъединить ячейки макросом

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Нужно, чтобы при разъединении вертикально объединенных 3-х ячеек в каждой отдельной ячейке оказалось содержимое того, что было в объединенной ячейке.
Как?
Vikar
Сообщения: 51
Зарегистрирован: 24 апр 2007, 14:21

Допустим объеденены ячейки A1:A3.
Тогда можно сделать так:

Код: Выделить всё

Sub Un_Merge()
    a = Cells(1, 1)
    Cells(1, 1).UnMerge
    Range(Cells(1, 1), Cells(3, 1)) = a
End Sub
Если нужно то же сделать с целым столбцом (или строкой), то вместо фиксированных значений a = Cells(1, 1) можно использовать переменные a = Cells(i, j) меняя их значения в цикле.
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

Помогите пожалуйста с кодом - нужно работая только с выделенными ячейками -
разъединять (тоже чтоб то что было в общей ячейке попало во все три ячейки) последовательно идущие сверху вниз объединенные по 3 штуки.
Serge_Bliznykov
Сообщения: 375
Зарегистрирован: 31 авг 2007, 03:06

vadim245 писал(а):Помогите пожалуйста с кодом - нужно работая только с выделенными ячейками -
разъединять (тоже чтоб то что было в общей ячейке попало во все три ячейки) последовательно идущие сверху вниз объединенные по 3 штуки.
вот рабочий код. может можно и короче, но, главное, работает.
Выделяете нужные ячейки (можно хоть весь столбец) и вызываете макрос

Код: Выделить всё

Sub Un_Merge_AllSelected()
 Dim c As Range
 Dim ma As Range
 Dim a As Variant
 For Each c In Selection
    With c
      If .MergeCells Then
        Set ma = .MergeArea
        a = c.Value
        .MergeArea.UnMerge
        ma.Value = a
      End If
    End With
 Next
End Sub
vadim245
Сообщения: 100
Зарегистрирован: 11 май 2007, 15:46

ШАМАН, однако :-)
Спасибо!
Ответить