|
|
|
| Есть программа, которая копирует строки с одного листа и записывает их на другой. Если в строках есть объединенные ячейки, то копируются только те ячейки, которые не являются объединенными
Worksheets("list").Rows(i).Сopy Worksheets("list1").Rows(k)
Как с этим бороться? | |
|
| |
|
|
|
| У тебя объединение вертикальное или горизонтальное?
При копировании объединенных ячеек данные берутся из левой верхней ячейки | |
|
| |
|
|
|
| Объединение вертикальное, но дело в том, что значения вообще никакие не выводятся. Я работаю уже с файлом, где ячейки объединены, но не мной :) это чужой файл, поэтому я не знаю изначально в какую из объединенных ячеек помещались данные. Есть способ как с этим справиться? | |
|
| |
|
|
|
| НЕ претендуя не универсальность могу предложить вместо стандартного копирования использовать фунцкию:
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
|
| |
|
| |