Как копировать данные без копирования ширины строки / столбца - PullRequest
0 голосов
/ 04 февраля 2019

Я использую VBA для копирования и вставки переменного количества строк с одного листа на другой, когда они соответствуют критериям.

Это работает.Однако, когда данные вставляются в целевой лист, ширина столбца и строки изменяются так, чтобы они совпадали с исходным листом.

Как я могу предотвратить это?Так что только данные вставляются, без форматирования ячейки.

Если кто-нибудь знает, это будет высоко ценится.

Вот код, который я использую.

Sub copyOverdue()

Dim cell As Range
Dim j As Integer
Dim Source As Worksheet
Dim Target As Worksheet

Set Source = ActiveWorkbook.Worksheets("Action Register")
Set Target = ActiveWorkbook.Worksheets("Sheet1")

j = 36     ' Paste to this number row
For Each cell In Source.Range("A7:A243")
    If c = "Overdue" Then
       Source.Range("A" & c.row & "," & "G" & c.row).Copy Target.Range("AD" & j)
       Source.Range("C" & c.row & "," & "F" & c.row & "," & "H" & c.row & "," & "K" & c.row).Copy Target.Range("AF" & j)
       j = j + 1
    End If
Next cell
End Sub

1 Ответ

0 голосов
/ 04 февраля 2019

Вы можете вставлять только специальные значения

For Each cell In Source.Range("A7:A243")
    If cell.value = "Overdue" Then
       cell.Resize(, 7).Copy
       Target.Range("AD" & j).PasteSpecial xlValues
       Source.Range("C" & cell.Row & "," & "F" & cell.Row & "," & "H" & cell.Row & "," & "K" & cell.Row).Copy
       Target.Range("AF" & j).PasteSpecial xlValues
       j = j + 1
    End If
Next cell

Вы также можете полностью избежать буфера обмена и передавать значения напрямую, что более эффективно, но может немного запутаться при работе с большими диапазонами.

Target.Range("AD" & j).Resize(,7).Value=cell.Resize(, 7).value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...