VBA userform仅在命中命令按钮后执行选择

时间:2016-10-17 16:31:15

标签: excel vba checkbox userform commandbutton

我很难在按下命令按钮(在这种情况下为GO按钮)后让vba执行我的选择。附件是userform的图片,它不是由activeX控件制作的,以及我正在处理的代码。谢谢!

Picture of Userform

Private Sub MR_Click()

If MR.Value = True Then
Rows(6).Delete
End If

End Sub

Private Sub PMS_Click()

If PMS.Value = True Then
Rows(7).Delete
End If

End Sub

Private Sub VOIDMR_Click()

If VOIDMR.Value = True Then
Rows(13).Delete
End If

End Sub

Private Sub VOIDPMS_Click()

If VOIDPMS.Value = True Then
Rows(14).Delete
End If

End Sub

2 个答案:

答案 0 :(得分:0)

像这样,使用" Go"按钮的_Click事件过程(大概是GO_Click(),但如果需要可以修改)以检查每个复选框并相应地进行删除。

Private Sub GO_Click()
If MR.Value = True Then
    Rows(6).Delete
End If
If PMS.Value = True Then
    Rows(7).Delete
End If
If VOIDMR.Value = True Then
    Rows(13).Delete
End If
If VOIDPMS.Value = True Then
    Rows(14).Delete
End If
End Sub
'These event procedures won't do anything, and can be removed:
Private Sub MR_Click()
End Sub
Private Sub PMS_Click()
End Sub
Private Sub VOIDMR_Click()
End Sub
Private Sub VOIDPMS_Click()
End Sub

复选框'不再需要_Click个事件程序。

要注意事件过程,它们将在事件发生时触发。因此,对于带有_Click事件的复选框,只要用户检查(或取消选中)_Click处理程序将执行。

如上所述,从集合中删除元素时要小心,因为这通常需要按相反顺序进行(当您删除第6行时,第7行变为第6行,因此如果同时检查MR和PMS,那么&#39 ;最初不会删除第7行中的s)。这可能需要一些额外的代码更改,但很简单,只需重新排序GO_Click中的命令,就应该处理:

Private Sub GO_Click()
If VOIDPMS.Value = True Then
    Rows(14).Delete
End If
If VOIDMR.Value = True Then
    Rows(13).Delete
End If
If PMS.Value = True Then
    Rows(7).Delete
End If
If MR.Value = True Then
    Rows(6).Delete
End If

End Sub

答案 1 :(得分:0)

只是@DavidZemens代码的风格变化:

Private Sub GO_Click()
    With Me '<-- reference the userform
        Select Case True
            Case .MR '<-- if MR checkbox control is True
                Rows(6).Delete
            Case .PMS '<-- if PMS checkbox control is True
                Rows(7).Delete
            Case .VOIDMR '<-- if VOIDMR checkbox control is True
                Rows(13).Delete
            Case .VOIDPMS '<-- if VOIPMS checkbox control is True
                Rows(14).Delete
        End Select
    End With
End Sub