首页 > 解决方案 > 如何从特定单元格中删除按钮?

问题描述

我有一个包含多个条目的日志。我将附加数据输入一行,例如单元格“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)中的数据被复制到另一张纸上。

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

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

标签: excelvbabutton

解决方案


您可以隐藏按钮。

With btn
    .Visible = Not .Visible
End with

推荐阅读