2014-05-29 4 views
-1

У меня есть код VBA, который копирует и вставляет страницы и копирует все правильно, за исключением любой ячейки, которая имеет vlookup. Я не знаю, в чем проблема, или может быть какое-то время задержки. Любые идеи были бы полезны.VBA VLOOKUP Copy/Paste

Dim thisSheet As Worksheet 
Set thisSheet = Application.ActiveSheet 

Dim templateSheet As Worksheet 
Set templateSheet = Worksheets("Template ") 

Dim baseSheet As Worksheet 
Set baseSheet = Worksheets("Base") 

Dim wrkBook As Workbook 
Set wrkBook = ActiveSheet.Parent 

Dim wrkSheet As Worksheet 

Dim sNewSheetName As String 
Dim nRow As Integer 

Application.ScreenUpdating = False 

Dim rRunRange As Range 
Set rRunRange = Range("Cohorts_to_Run") 

Dim n As Integer 

For nRow = 1 To rRunRange.Rows.Count 

    sNewSheetName = rRunRange.Cells(nRow, 2).Value 

    Set wrkSheet = Worksheets.Add(, Worksheets(Worksheets.Count)) 
    wrkSheet.Name = sNewSheetName 

    'Set parameters to pickup data.... 
    Dim zZoom As Double 
    zZoom = ActiveWindow.Zoom 

    templateSheet.Activate 
    templateSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value).Copy 

    wrkSheet.Activate 
    wrkSheet.PasteSpecial xlPasteColumnWidths 
    wrkSheet.Paste 
    ActiveWindow.Zoom = baseSheet.Range("ZOOM_LEVEL").Value 

    wrkSheet.Range("A1").RowHeight = 10 

    Application.CutCopyMode = False 


    wrkSheet.Range("B2").Value = Range("Cohorts_to_Run").Cells(nRow, 1).Value 

    Dim sTitleRangeName As String 
    sTitleRangeName = sNewSheetName & "_Title" 

    wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value).Select 
    Selection.Copy 
    wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value).PasteSpecial   
    xlPasteValuesAndNumberFormats 
Next nRow 
+1

Вам понадобится опубликовать свой подозрительный код для нас, чтобы узнать, в чем проблема. – Brad

+0

http://stackoverflow.com/help/how-to-ask –

ответ

0

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

wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value).PasteSpecial xlPasteValuesAndNumberFormats 

Почему бы не просто вставить? xlPasteValuesAndNumberFormats будет удалять ваши формулы каждый раз. В этом-то и дело.

Dim copyRange as Range, pasteRange as Range 
Set copyRange = wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value) 
Set pasteRange = wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value) 
copyRange.Copy pasteRange 

Вы wrkSheet.Range(baseSheet.Range("TEMPLATE_COPY_RANGE").Value) синтаксис сбивает с толку, хотя. Есть ли название другого диапазона в вашем именованном диапазоне TEMPLATE_COPY_RANGE?