即使点击特定的表单控制按钮,也会禁止其运行指定的宏。

问题描述 投票:0回答:2

我希望能够阻止一个特定的按钮("Button 4925")运行它所分配的宏,即使它被点击。基本上,当你点击它时,它要么什么都不做,要么显示一条消息说:"这是一个不能删除的重要项目 "换句话说,我希望只有当点击的按钮在单元格A12中时才能退出子程序。否则,就像正常运行代码一样。考虑到我是一个非常初级的VBA.一些信息:该按钮是一个表单控制按钮。不是一个Active X按钮。它被工作表上的另一个宏复制和粘贴。分配的宏是写在标准模块下的,分配的宏功能是删除相对范围的行。下面是代码。

    Sub Delete_Button()

' Delete_Button Macro

' Step 1: Select the cell under the clicked button
Dim r As Range
Dim s As Object
Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell
r.Select

' Step 2: delete all buttons relative to the selected cell from step 1
StartCell = ActiveCell.Offset(-5, 0).Address
EndCell = ActiveCell.Offset(0, 0).Address

For Each s In ActiveSheet.DrawingObjects
If Not Intersect(Range(StartCell, EndCell), s.TopLeftCell) Is Nothing Then
        s.Delete
    End If
Next s

' Step 3: delete the rows relative to the selected cell from step 1
    ActiveCell.Offset(-7, 0).Rows("1:9").EntireRow.Select
    Selection.Delete Shift:=xlUp
    ActiveCell.Offset(-4, 0).Range("A1").Select

End Sub
excel vba excel-vba button macros
2个回答
0
投票

你必须 "告诉 "代码,在某种程度上,它必须不删除的范围。

所以,我建议你创建一个 Private 变量在模块顶部保留按钮代码(在声明区)。

 Private stopButCode As Boolean

比方说,你必须让这个变量 True. 使用一个复选框,或在另一个控件中使用一段代码,使其成为 True.

按钮代码必须以如下方式调整。

If Not stopButCode Then
   'delete whatever is to be deleted
Else
   MsgBox "Deletion not allowed..."
   Exit Sub
End If

Edited:如果你想让代码只在 "A12 "单元格上的按钮不工作,你可以使用如下方式调整你的代码。

Dim r As Range
Dim s As Object
Set r = ActiveSheet.Buttons(Application.Caller).TopLeftCell
If r.Address = "$A$12" then Exit Sub

'here follows your existing code...

0
投票

假设分配给按钮的宏的名字是: Button_4925_click 然后在开头添加以下一行 Exit Sub

Sub Button_4925_click ()
   Exit Sub
   ' remaining code will not be executed
End Sub

更新: 根据添加的信息(评论和帖子),您可以检查按钮的位置,并退出子项目。

Sub Button_4925_click ()
    Dim sh As Shape
    Set sh = ActiveSheet.Shapes("Button 4925")
    If sh.TopLeftCell.Address(False, False) = "A12" Then
       Exit Sub
    End If

    ' remaining code will only be be executed if         
    ' button is not located near cell A12

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.