Изменение VBA таким образом, что перенос таблицы на новый лист также переносит форматирование - PullRequest
0 голосов
/ 20 сентября 2019

Я застрял.Я разработал этот VBA, который работает хорошо, но нуждается в небольшой модификации.

Этот код не переносит цвет таблицы в новую рабочую таблицу.

Когда я изменяю .Value на что-то другое, я получаю ошибку.

    Set ws2 = ThisWorkbook.ActiveSheet
        'Make a new spreadsheet
    Set ws = ThisWorkbook.Worksheets.Add(Type:=xlWorksheet)
    final_col = ws2.Cells(6, 250).End(xlToLeft).Column
    With ws
        'Paste data into new spreadsheet created above
        .Range(.Cells(2, 2), .Cells(8, final_col)).Value = ws2.Range(ws2.Cells(5, 1), ws2.Cells(11, final_col)).Value

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вам нужно использовать xlPasteValues, как показано ниже

Set ws2 = ThisWorkbook.ActiveSheet
        'Make a new spreadsheet
    Set ws = ThisWorkbook.Worksheets.Add(Type:=xlWorksheet)
    final_col = ws2.Cells(6, 250).End(xlToLeft).Column
    ws2.Range(ws2.Cells(5, 1), ws2.Cells(11, final_col)).copy
    With ws
        'Paste data into new spreadsheet created above
        .Range(.Cells(2, 2), .Cells(8, final_col)).Value.PasteSpecial Paste:=xlPasteValues  

Этот код вставит только значение вашего листа и не будет заботиться о формате (фон и т. Д.)

0 голосов
/ 20 сентября 2019
Set ws2 = ThisWorkbook.ActiveSheet
Set ws = ThisWorkbook.Worksheets.Add(Type:=xlWorksheet)
final_col = ws2.Cells(6, 250).End(xlToLeft).Column
ws2.Range(ws2.Cells(5, 1), ws2.Cells(11, final_col)).Copy
With ws
    .Range(.Cells(2, 2), .Cells(8, final_col)).PasteSpecial

Это решение работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...