【问题标题】:How to paste macros to other sheets using VBA如何使用 VBA 将宏粘贴到其他工作表
【发布时间】:2019-10-03 11:14:15
【问题描述】:

我希望能够使用 VBA 将粘贴对象分配的宏复制到另一个工作表。

以下代码将一张工作表的格式复制并粘贴到另一张工作表,但不复制工作表中的宏。

        WshTrg.Cells.PasteSpecial xlPasteFormats
        WshTrg.Cells.PasteSpecial xlPasteColumnWidths
        WshTrg.Cells.PasteSpecial xlPasteFormulasAndNumberFormats
        WshTrg.Cells.PasteSpecial xlPasteAll

有没有一种方法可以粘贴对象而不是格式从一张纸粘贴到另一张纸上

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    是的。你的问题很详细,所以这很粗略,但你明白了。

    将复制附加到形状的任何宏。

    Sub x()
    
    Sheet1.Shapes(1).Copy
    Sheet2.Paste
    
    End Sub
    

    【讨论】:

      【解决方案2】:

      如果我们讨论的是通过其OnAction 属性分配给宏的形状,那么您无需复制宏。

      事实上,当你发现自己在任何地方复制粘贴代码时,停下来想想是否有办法避免重复代码 - 几乎总是有办法的。

      听起来形状附加到工作表代码隐藏中实现的宏。

      向您的项目添加一个新的标准模块,然后将代码移动(剪切和粘贴)到那里。注意该代码中的任何implicit ActiveSheet references,因为Range("A1")Worksheet 模块的代码隐藏中所做的是Me.Range("A1"),但在标准模块中是ActiveSheet.Range("A1")(与不合格的Cells 相同, Names, Columns, Rows, ...):明确说明您正在使用哪张工作表,一切都会好起来的。

      现在将您的形状与标准模块中的宏重新关联(即Sheet1!MyMacro 变为MyMacro),现在您不需要在复制的形状中携带任何代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-19
        • 2018-12-07
        • 2016-04-16
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多