【问题标题】:How to delete button from a specific cell?如何从特定单元格中删除按钮?
【发布时间】:2020-12-08 16:45:43
【问题描述】:

我有一个包含多个条目的日志。我在一行中输入了额外的数据,例如在单元格“G3”中。

如果输入的数据是有效日期,则会在该行的相邻单元格“J3”中创建一个按钮:

Public Sub Worksheet_Change(ByVal target As Range)
    Dim intersection As Range
    Dim RgBtn As Range
    Dim Btn As Shape
    Dim wS As Worksheet
    Set intersection = Intersect(target, Columns(7))
    Set wS = ThisWorkbook.Sheets("Log")    'Worksheet

    If Not intersection Is Nothing Then

        If IsDate(target.Value) Then
            'MsgBox "Cell " & Target.Address(0, 0) & " contains a valid date."
            'Add Button:
            wS.Unprotect "DoNotChange!"
            Set RgBtn = wS.Range("J" & target.row)
            Set Btn = wS.Shapes.AddFormControl(xlButtonControl, RgBtn.Left, RgBtn.Top, RgBtn.Width, RgBtn.Height)
            With Btn
                .OnAction = "'CreateInvoice " & target.row & "'"
                .OLEFormat.Object.Text = "Create Entry"
            End With
        Else
            'MsgBox "Error..."
        End If

    End If
End Sub

当我单击该按钮时,该范围 (A3:F3) 中的数据将复制到另一张工作表中。

我希望,在单击该按钮后,该按钮被删除并替换为“已完成”文本。

我尝试了几种方法来删除该按钮。

【问题讨论】:

  • 在 CreateInvoice 中,您可以使用 Application.Caller 获取对按钮/形状的引用,以便将其删除
  • Activesheet.Shapes(Application.Caller).Delete
  • 这么简单!!!哦,伙计,有时……非常感谢蒂姆,这就像一个魅力!

标签: excel vba button


【解决方案1】:

您可以隐藏按钮。

With btn
    .Visible = Not .Visible
End with

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-01
    • 2013-03-26
    • 2021-04-11
    • 2021-01-19
    • 2021-12-13
    • 1970-01-01
    • 2020-12-10
    • 2011-02-14
    相关资源
    最近更新 更多