特别粘贴在vba中

时间:2011-06-14 11:57:06

标签: vba paste

我正在尝试在vba中使用pastespeci。我基本上需要粘贴值(而不是公式,因为公式在重新计算时因为该表中单元格值的更改而粘贴到新工作表上)到另一个工作表...但是我收到错误1004,说'aaplication defined or object defined error'..继承人代码......请帮助某人......

Sub Macro1try()

Dim i As Integer

Dim j As Integer

For i = 1 To 2

Worksheets("Volatility").Cells(1, "B").Value = Worksheets("Volatility").Cells(i, "S").Value

Call mdlMain.ExtractData

 Range("A11:D2330").Select

    Selection.Copy

    Sheets.Add After:=Sheets(Sheets.Count)

    ActiveSheet.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False


  ActiveWorkbook.Sheets("Volatility").Activate


    Next i
End Sub

3 个答案:

答案 0 :(得分:4)

我学到了很多方法:尽可能避免复制/粘贴!复制并粘贴使用剪贴板。其他程序可能会在您的代码运行时读取/写入剪贴板,这将导致两端产生狂野的,不可预测的结果。

在您的特定情况下,完全不需要复制和粘贴。只需使用=

For i = 1 To 2

    '// Your stuff, which I won't touch:
    Worksheets("Volatility").Cells(1, "B").Value _
         = Worksheets("Volatility").Cells(i, "S").Value
    Call mdlMain.ExtractData
    Sheets.Add After:=Sheets(Sheets.Count)

    '// The following single statement replaces everything else:
    Sheets(Sheets.Count).Range("A11:D2330").Value _
        = Sheets("Volatility").Range("A11:D2330").Value
    '// Voilà. No copy, no paste, no trouble. 

    '// If you need the number format as well, then:
    Sheets(Sheets.Count).Range("A11:D2330").NumberFormat_
        = Sheets("Volatility").Range("A11:D2330").NumberFormat    
Next i

答案 1 :(得分:1)

你需要说明你把它放在表格上的位置

Sub Macro1try()

Dim i As Integer
Dim j As Integer

For i = 1 To 2

    Worksheets("Volatility").Cells(1, "B").Value = Worksheets("Volatility").Cells(i, "S").Value

    Call mdlMain.ExtractData

    Sheets.Add After:=Sheets(Sheets.Count)

    Worksheets("Volatility").Range("A11:D2330").Copy
    Sheets(Sheets.Count).Range("A11:D2330").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

Next i
End Sub

答案 2 :(得分:0)

添加      “.Range( ”A1“)”。 在'ActiveSheet'和'PasteSpecial'之间 将A1更改为您要粘贴到的位置。