1

現在、チェックボックスの onclick イベント内で Sub を呼び出そうとしています。私がしたいのは、クリックしたチェックボックスの groupName、Name、および Value パラメータを取得し、変数を使用してグループ内の残りのチェックボックスを非表示または非表示に切り替えるサブにフィードすることです。ただし、同じ機能を持たせたい複数のグループチェックボックスがあり、onclickイベントごとに複数の関数を作成するのではなく、毎回可視性の変更を処理するサブを呼び出すことができるようにしたい.

適用例

上の画像を考えてみましょう。「管理者」チェックボックスをfalseに設定すると、同じボックス内の「古いバージョン」チェックボックスが非表示になります。trueにチェックすると、再び表示されるはずです。クライアントボックスでも同じことをしたいです。オンラインで調べたところ、多くの人が ActiveControl.Value または Application.Caller の使用を推奨していますが、これらのどれも機能していないようです。これまでに使用している 2 つのサブウーファーは以下にあります。現在の状態では、アプリケーション エラー

    admin_value = ActiveControl.Value

完全なコード スニペットは次のとおりです。

  Private Sub admin_toggle_Click()

      Dim admin_group As String
      Dim admin_name As String
      Dim admin_value As String

      admin_value = ActiveControl.Value
      admin_name = ActiveControl.Name
      admin_group = ActiveControl.GroupName

     Call toggle_options

  End Sub

  Private Sub toggle_options()

  Dim ctl As Control

  For Each ctl In Me.Controls

    If TypeOf ctl Is MSForms.CheckBox Then
        If ctl.GroupName = admin_group Then
        If ctl.Name <> admin_name Then
            If admin_value = True Then
            ctl.Visible = True
            Else
            ctl.Visible = False
            End If
        End If
        End If
    End If

Next ctl

End Sub  

前もって感謝します。

4

1 に答える 1

1

これはあなたがしようとしていることですか?

Private Sub admin_toggle_Click()
    Dim ctl As Control

    Set ctl = admin_frame.ActiveControl
    ShowHideControls admin_frame, ctl
End Sub

Sub ShowHideControls(frme As Control, cb As Control)
    Dim c As Control

    For Each c In frme.Controls
        If TypeOf c Is MSForms.CheckBox Then
            If c.Name <> cb.Name Then
                If cb.Value = True Then
                    c.Visible = True
                Else
                    c.Visible = False
                End If
            End If
        End If
    Next
End Sub
于 2012-07-04T12:10:37.760 に答える