【问题标题】:Why 'Application.Calculation=[value]' statement in Excel VBA erases Clipboard Memory? [duplicate]为什么 Excel VBA 中的“Application.Calculation=[value]”语句会擦除剪贴板内存? [复制]
【发布时间】:2023-04-10 17:42:01
【问题描述】:

问题定义:在下面的 Excel VBA 示例代码 sn-p(参见清单 1)中,它旨在将单元格“A1”的内容复制粘贴到单元格“A2”,行:

Application.Calculation = xlCalculationManual

看似擦除剪贴板内存,导致运行时错误。此外,以下任何类似的语句都会产生相同的效果:

Application.Calculation = xlManual
Application.Calculation = xlAutomatic

清单 1。

'demo Sub demonstrating Clipboard Memory flash by the statement
'Application.Calculation = xlCalculationManual
Sub CopyPaste()
    'select cell with some test value
    Range("A1").Select

    'selected value is copied to Clipboard memory
    Selection.Copy

    'This statement seemingly erases Clipboard memory
    'causing Run-Time Error 1004
    'if this line is commented-off, the procedure will run normally
    Application.Calculation = xlCalculationManual

    ' test if clipboard is empty ---------------------
    On Error Resume Next
    ActiveSheet.Paste
    If Err Then MsgBox "Error num: " & Err.Number & "|Clipboard is Empty": Err.Clear
    '-------------------------------------------------

    'target cell to copy value from Clipboard
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues
End Sub

如果您注释掉上述声明,程序将完美运行。

问题:Application.Calculation = xlCalculationManual 语句是否会刷新剪贴板内存,如果是,为什么?

任何对 Microsoft Excel 文档的引用将不胜感激。

【问题讨论】:

    标签: excel clipboard copy-paste worksheet-function vba


    【解决方案1】:

    这是真的吗?显然是这样。我从来没有注意到;但我只是测试了它,这就是它的作用。所以是的,这是真的。

    为什么?好吧,谁知道呢。我们不得不询问微软的开发人员他们脑子里在想什么,或者这是否是有意的。但我不明白知道“为什么”会有什么实际用途。

    重要的是适当的解决方法:将Application.Calculation = xlCalculationManual 移动到代码的顶部,或至少在Copy 语句之前。

    更好的是,完全避免使用剪贴板,当然也避免使用Select-Selection 符号:

    Range("A1").Copy Destination:=Range("A2")
    

    或仅复制值:

    Range("A2").Value = Range("A1").Value
    

    或者,为了完全控制:

    Dim temp as variant
    temp = Range("A1").Value
    'manipulate temp here if you so wish
    Range("A2").Value = temp
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多