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