メインコンテンツへスキップ
 

Excelのチェックボックスのグループで選択されるチェックボックスをXNUMXつだけにする方法は?

作者: シルヴィア 最終更新日:2020年07月09日

以下のスクリーンショットに示すように、行2にリストされているチェックボックスのグループで、XNUMXつのチェックボックスのみを選択またはチェックすると、他のチェックボックスは無効になります。 それを達成する方法は? この記事のVBAコードは役に立ちます。

VBAコードで選択するチェックボックスをXNUMXつだけ作成します


VBAコードで選択するチェックボックスをXNUMXつだけ作成します

以下のVBAコードを実行して、チェックボックスグループで一度にXNUMXつのチェックボックスのみを選択できます。 次のようにしてください。

1.まず、必要に応じてチェックボックスを挿入してください。 ここに、を挿入する必要があります ActiveXコントロールのチェックボックス 次のスクリーンショットのように:

2.次にを押します 他の + F11キーを同時に開いて アプリケーション向け Microsoft Visual Basic 窓。

3.オープニングで アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > クラスモジュール.

4.クラス名をに変更します Clsチェック の中に (名前)の箱 プロパティ ペインをクリックし、以下のVBAコードをコピーして対応するものに貼り付けます Code 窓。 スクリーンショットを参照してください:

VBAコード1:一度にXNUMXつのチェックボックスのみを選択します

Option Explicit
Public WithEvents Chk As MSForms.CheckBox
Private Sub Chk_Click()
Call SelOneCheckBox(Chk)
End Sub

Sub SelOneCheckBox(Target As Object)
Dim xObj As Object
Dim I As String
Dim n As Integer
If Target.Object.Value = True Then

    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Value = False
        xObj.Object.Enabled = False
      End If
    Next
Else
    I = Right(Target.Name, Len(Target.Name) - 8)
    For n = 1 To ActiveSheet.OLEObjects.Count
      If n <> Int(I) Then
        Set xObj = ActiveSheet.OLEObjects.Item(n)
        xObj.Object.Enabled = True
      End If
    Next
End If
End Sub

5.次にクリックします インセット > モジュール、次に以下のVBAコードをコピーして貼り付けます モジュール 窓。

VBAコード2:一度にXNUMXつのチェックボックスのみを選択します

Dim xCollection As New Collection
Public Sub ClsChk_Init()
Dim xSht As Worksheet
Dim xObj As Object
Dim xChk As ClsChk
   Set xSht = ActiveSheet
   Set xCollection = Nothing
    For Each xObj In xSht.OLEObjects
        If xObj.Name Like "CheckBox**" Then
            Set xChk = New ClsChk
            Set xChk.Chk = CallByName(xSht, xObj.Name, VbGet)
            xCollection.Add xChk
        End If
    Next
    Set xChk = Nothing
End Sub

6。 プレス F5 コードを実行するためのキー。

これ以降、ワークシートのチェックボックスのいずれかをオンにすると、他のチェックボックスが自動的に無効になり、チェックを外してすべてのチェックボックスを再度アクティブにすることができます。

Note:チェックボックスグループに新しいチェックボックスが追加された場合は、VBAコードを再実行して、すべてのチェックボックスを再度アクティブにしてください。 チェックボックスグループからチェックボックスを削除すると、コードも再実行する必要があります。


R高揚した記事:

最高のオフィス生産性向上ツール

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...


Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!