【问题标题】:How to copy an ActiveX command button to another sheet and keep the name of the button [duplicate]如何将 ActiveX 命令按钮复制到另一个工作表并保留按钮的名称 [重复]
【发布时间】:2013-08-29 09:33:24
【问题描述】:

我已尝试使用以下代码从一张纸上复制 ActiveX 命令按钮并将其粘贴到另一张纸上:

Sheets("SRC").HasACustomName.Copy
Sheets("TRGT").Range("O1").PasteSpecial

我也试过了:

Sheets("SRC").Shapes("hasACustomName").Copy 
Sheets("TRGT").Range("O1").Select 
Sheets("TRGT").Paste

但我遇到的问题是它们将命令按钮从 hasACustomName 重命名为 CommandButtonX。

你能想出另一种方法将命令按钮从一张纸粘贴到另一张纸上,让我保留命令按钮的原始名称吗?

【问题讨论】:

  • @mehow:嗯...所以你把你的答案贴在两个地方?
  • @Jean-FrançoisCorbett 长话短说 - 问题一开始是不同的,然后它们最终是同一件事,所以我重新复制了答案,我认为我将其标记为合并,如果我没空这样做
  • +1 对 JFC 的评论。

标签: excel vba


【解决方案1】:

ActiveX

您可以使用以下代码将 ActiveX 控件从一个工作表复制到另一个工作表。

注意:一个电子表格中不能有两个同名对象。

Sub CopyActiveX()
    Application.ScreenUpdating = False
    Dim x As OLEObject, y As OLEObject
    Set x = Sheets("SRC").OLEObjects("HasCustomName")
    Set y = x.Duplicate
    Dim xName As String
    xName = x.Name
    y.Cut
    With Sheets("TRGT")
        .Paste
        .OLEObjects(.OLEObjects.Count).Name = xName
        .Activate
    End With
    Application.ScreenUpdating = True
End Sub


表单控件

要将按钮从一张表复制到另一张表以防止自动更改名称,请使用以下代码。默认情况下,Excel 为复制的按钮提供一个新名称(即使在不同的工作表上),因此您必须重命名它以匹配您正在复制的按钮的名称。

使用CopyButton() sub 来实现。有4个必填参数

  • from - 用于复制按钮的工作表名称
  • btnName - 要复制的控件的名称
  • toWorksheet - 目标工作表
  • rng - 与按钮关联的目标范围

Sub CopyPasteButton()
    CopyButton "SRC", "Button 1", "TRGT", "B10"
End Sub

Private Sub CopyButton(from As String, btnName As String, toWorksheet As String, rng As String)
    Application.ScreenUpdating = False
    Sheets(from).Shapes(btnName).Copy
    Sheets(toWorksheet).Activate
    Sheets(toWorksheet).range(rng).Select
    Sheets(toWorksheet).Paste
    Selection.ShapeRange.Name = btnName
    Application.ScreenUpdating = True
End Sub

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多