2014-11-15 2 views
0

Я пытаюсь скопировать только значения из таблицы на другой лист, однако приведенный ниже код копирует только формулы, теряя при этом ссылки. Я пробовал различные решения, такие как добавление .Value .DataBodyRange.Copy Cells (i, 1), однако, не сработало.VBA Excel Copy Table Значения только на другом листе

Спасибо за вашу помощь

Sub loadData() 
Application.AutoCorrect.AutoFillFormulasInLists = False 
Dim wsh As Worksheet, i& 
Application.ScreenUpdating = 0 
With ActiveSheet.ListObjects(1) 
    If ActiveSheet.FilterMode Then .Range.AutoFilter 
    .DataBodyRange.Delete 
    i = 4 
    For Each wsh In ThisWorkbook.Worksheets 
     If wsh.Name <> "Template" Then 
      With wsh.ListObjects(4) 
       .DataBodyRange.Copy Cells(i, 1) 
       i = i + .ListRows.Count 
      End With 
     End If 
    Next wsh 
    .Range.AutoFilter Field:=5 
End With 
Application.ScreenUpdating = 1 
End Sub ` 

ответ

0

This question может помочь вам. Попытайтесь изменить формат (значения или формулы) при вставке значений с помощью pastespecial.

0

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

Вы можете сделать еще один цикл, в котором вы устанавливаете значения для ячеек по одному.

LastCol = Sheets("Sheet1").Cells(1, Columns.count).End(xlToLeft).Column 'Get last column of row with data 

For col = 1 To LastCol 
    Sheets("Sheet2").Cells(i, col).Value = Sheets("Sheet1").Cells(i, col).Value 
Next col 

Это не полное решение, но если вставить это в код, где вы пытаетесь скопировать и вставить, вы должны получить хорошее представление о том, как выполнить это. Опять же, я бы не использовал макросы копирования и вставки, просто потому, что быстрее писать три или четыре строки в VBA, чем записывать макрос, а затем редактировать его, очищать, модифицировать и отлаживать. Конечно, кажется, что меньше работы «записывать макрос», но, по моему опыту, код быстрее и точнее. Вы точно знаете, что происходит вместо некоторых параметров, которые вы, возможно, не хотите задавать, и не знаете, что они делают.