我有一个VBA表单,其中包含各种选择选项,包括下拉菜单,文本字段,复选框和单选按钮。

我只想了解按一下按钮清除所有这些字段的最佳方法。我的一个 friend 试图通过电子邮件将以下代码发送给我,以提供帮助,但不幸的是,该代码不起作用,我检查了变量名。

关于如何改善它的任何建议?

提前致谢。

Private Sub btnReset_Click()

Unload Me
UserForm.Show

End Sub

这是该用户表单的其他代码。
Dim DeptCode 'Holds department code

Private Sub UserForm_Initialize()

    Dim c_deptCode As Range
    Dim c_deptName As Range
    Dim deptCodes As Variant
    Dim deptNames As Variant

    Dim ws_dept As Worksheet
    Set ws_dept = Worksheets("lookupDept")

    ' Assign each range to an array containing the values
    deptCodes = Choose(1, ws_dept.Range("deptCode"))
    deptNames = Choose(1, ws_dept.Range("deptName"))

    For i = 1 To ws_dept.Range("deptCode").Rows.Count
        ' Create the combined name (code + space + name)
        CombinedName = deptCodes(i, 1) & " - " & deptNames(i, 1)
        cbo_deptCode.AddItem CombinedName
    Next i

End Sub

最佳答案

我认为当它到达“卸载我”行时,代码执行停止,这就是为什么它对您不起作用的原因。这是一个通用事件过程,用于重置表单上的所有(大多数)控件。

Private Sub cmdReset_Click()

    Dim ctl As MSForms.Control

    For Each ctl In Me.Controls
        Select Case TypeName(ctl)
            Case "TextBox"
                ctl.Text = ""
            Case "CheckBox", "OptionButton", "ToggleButton"
                ctl.Value = False
            Case "ComboBox", "ListBox"
                ctl.ListIndex = -1
        End Select
    Next ctl

End Sub

它不会重新填充ComboBoxes和ListBoxes,只需清除选择即可,这就是我认为您想要的。

09-26 23:24