1

我在整个网站上进行了搜索以找到我的问题的答案,并且大多数相关解决方案都是针对更复杂的问题。这是我需要做的。我在 Excel 2007 中创建了一个简单的表单。我正在寻找在表单底部添加一个按钮的功能,该按钮允许用户单击该按钮并将该工作表复制到同一个 Excel 文档中的新工作表中。基本上只是复制活动工作表。

我试着用宏来做,但没有得到想要的结果,而且我们的大多数同事仍然使用 Excel 2003,所以我不确定宏是否可以在旧版本的 excel 中工作。我不知道任何 VBA,这就是为什么我来这里寻求大家的帮助。

所以回顾一下。

  1. 一张 Excel 文档,其中包含一个简单的表单和一个位于活动工作表底部的命令按钮
  2. 该工作表的命令按钮“复制和粘贴”到同一个 Excel 文档中的新工作表中
  3. 如果可能,可以在 Excel 2003 和 2007 中运行的解决方案。如果没有,2007 年。

非常感谢任何愿意帮助 Excel 新手用户的人。

4

4 回答 4

1

假设您知道如何在此处添加按钮,只需一行简单的代码即可复制活动工作表:

Sub Button1_Click()
    ActiveSheet.Copy after:=ActiveSheet
End Sub
于 2009-11-16T22:40:56.120 回答
0

也许是这样的(仅在 Excel 2003 中测试):

Dim srcSheet, dstSheet
    Set srcSheet = ActiveSheet

    Sheets.Add
    Set dstSheet = ActiveSheet

    srcSheet.Activate
    srcSheet.Cells.Select
    Selection.Copy

    dstSheet.Activate
    dstSheet.Cells.Select
    ActiveSheet.Paste
于 2009-11-16T21:49:32.813 回答
0

您应该会发现此方法适用于 Excel 2003 和 Excel 2007。在您的表单中,添加以下方法:

Sub CopySheet(WorkSheetName as String)

    Dim WrkSht As Worksheet
    Set WrkSht = Sheets(WorkSheetName)

    WrkSht.Copy After:=Sheets(WorkSheetName)

    Set WrkSht = Nothing

End Sub

从按钮单击事件中,使用以下命令调用它:

Sub Button1_Click()

    Call CopySheet("WorkSheetToCopyName") 
    'You could also replace the string name with ActiveSheet if you so wish

End Sub

这将在当前工作表和下一个工作表之间转储工作表的副本。我已经在 Excel 2003 和 Excel 2007 中对其进行了测试,并且两者都适用。可悲的是,它并没有给第二个一个漂亮的名字 - 它只是与源工作表具有相同的名称,并在其后加上 (2)。

所有的格式、保护和公式也被复制了——它是第一个的副本。

于 2009-11-16T23:01:00.267 回答
0

我知道这个问题很老了,但只是想指出您(和用户)可以用零代码做同样的事情:右键单击底部的工作表名称并选择Move or Copy...,然后选中创建副本框并单击确定。是的,它需要 4 次点击,但它非常简单并且避免了代码。

于 2017-11-13T19:52:18.307 回答