在vba中粘贴特殊

Posted

技术标签:

【中文标题】在vba中粘贴特殊【英文标题】:paste special in vba 【发布时间】:2011-06-14 11:57:05 【问题描述】:

我正在尝试在 vba 中使用 pastespecial ..我基本上需要将值(而不是公式,因为公式在粘贴到新工作表时重新计算,因为该工作表中的单元格值发生了变化)到另一个工作表...但是我收到错误 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

【问题讨论】:

VBA 确实带有调试器,请使用它。另外,能否请您格式化代码并指出发生错误的行? 您会在编辑窗口的菜单中找到代码格式按钮,如下所示: 【参考方案1】:

这是我学到的艰难方法:尽可能避免复制/粘贴!使用剪贴板进行复制和粘贴。其他程序可能会在您的代码运行时读取/写入剪贴板,这将在两端导致疯狂的、不可预测的结果。

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于在vba中粘贴特殊的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

用于查找空白单元格的 VBA

如何在 Microsoft Word 的 VBA 中使用特殊字符?

如何在 Document.createElement() 中使用特殊字符 - VBA DOM XML

使用特殊字符搜索单元格值时 VLOOKUP 的 Excel VBA 替代方案

如何使用 Selenium 和 VBA 识别包含特殊字符的元素类名