Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: VBA MS Office

Программирования для MS Office кроме ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Копирование объединенных ячеек
 
 автор: Nastya   (29.01.2007 в 13:33)   личное сообщение
 
 

Есть программа, которая копирует строки с одного листа и записывает их на другой. Если в строках есть объединенные ячейки, то копируются только те ячейки, которые не являются объединенными
Worksheets("list").Rows(i).Сopy Worksheets("list1").Rows(k)
Как с этим бороться?

  Ответить  
 
 автор: Виталька   (30.01.2007 в 11:38)   личное сообщение
 
 

У тебя объединение вертикальное или горизонтальное?
При копировании объединенных ячеек данные берутся из левой верхней ячейки

  Ответить  
 
 автор: Nastya   (30.01.2007 в 11:58)   личное сообщение
 
 

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

  Ответить  
 
 автор: osmor   (31.01.2007 в 12:56)   личное сообщение
 
 

НЕ претендуя не универсальность могу предложить вместо стандартного копирования использовать фунцкию:



Public Function copyMergeRow(RowSource As range, shTarget As Worksheet, intRow As Integer)
'RowSource - исходная строка как объект
' shTarget - целевой лист как объект
' номер строки под которым нужно вставить копируемую строку
Dim rngCell As range
On Error GoTo Err_copyMergeRow

On Error GoTo Err_mer
RowSource.Copy shTarget.Rows(intRow)

If IsNull(RowSource.MergeCells) Then
    For Each rngCell In RowSource.Cells
        With rngCell
            If .MergeCells Then
                .MergeArea.Cells(1, 1).Copy shTarget.Cells(intRow, .Column)
            End If
        End With
    Next
End If

Exit_copyMergeRow:
    Exit Function

Err_copyMergeRow:
    Select Case Err.Number
        Case Else
            MsgBox "(" & Err.Number & ") " & Err.Description & " в процедуре copyMergeRow "
            Resume Exit_copyMergeRow
    End Select
End Function

'пример вызова:
' копирует строки с 1 по 12 с "лист1" на "лист2"

Dim i As Integer
For i = 1 To 12
    Call copyMergeRow(Worksheets("Лист1").Rows(i), Worksheets("Лист2"), i )
Next

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList