チェックボックスがExcelでチェックされているときに別のチェックボックスをオフにする方法は?
下の gif に示すように、最終決定する必要がある購入リストがあるとします。 リストを確認しているときに、一部のカテゴリでチェックしたアイテムが予算を超えているため、再選択する必要があることがわかりました。 リストが長すぎるため、カテゴリで新しいチェックボックスがオンになったときに、元のチェックボックスを自動的にオフにするより効率的な方法が必要になりました。 このチュートリアルでは、この方法を順を追って説明し、実行に役立てます。
VBAコードで新しいチェックボックスがチェックされている場合、別のチェックボックスをオフにします
VBAコードで新しいチェックボックスがチェックされている場合、別のチェックボックスをオフにします
上記のデモに示すように、名前が付けられた XNUMX 個のチェックボックス チェックボックス1, チェックボックス2, チェックボックス3……、 チェックボックス10 は 3 つのグループに分けられ、表のさまざまなカテゴリに分類されます。
この例では、Checkbox1、2、3 が 4 つのグループに、Checkbox5、6、7、8 が 9,10 つのグループに、CheckboxXNUMX、XNUMX、XNUMX が同じグループに属しています。 各グループで、一度にチェックできるチェックボックスは XNUMX つだけです。 チェックボックスをオンにすると、別のチェックボックスが自動的にオフになります。
次に、次の VBA コードを適用してこの問題を解決する方法を見てみましょう。
1. シート タブを右クリックし、 コードを表示 コンテキストメニューから選択します。
2.開いた状態で アプリケーション向け Microsoft Visual Basic ウィンドウで、次の VBA コードを シート(コード) 窓。
VBAコード:新しいチェックボックスがチェックされているときに別のチェックボックスをオフにします
Dim xBol As Boolean
'Updated by Extendoffice 20220816
Private Sub CheckBox1_Change()
SetCheckBoxes "CheckBox1"
End Sub
Private Sub CheckBox2_Change()
SetCheckBoxes "CheckBox2"
End Sub
Private Sub CheckBox3_Change()
SetCheckBoxes "CheckBox3"
End Sub
Private Sub CheckBox4_Change()
SetCheckBoxes "CheckBox4"
End Sub
Private Sub CheckBox5_Change()
SetCheckBoxes "CheckBox5"
End Sub
Private Sub CheckBox6_Click()
SetCheckBoxes "CheckBox6"
End Sub
Private Sub CheckBox7_Click()
SetCheckBoxes "CheckBox7"
End Sub
Private Sub CheckBox8_Click()
SetCheckBoxes "CheckBox8"
End Sub
Private Sub CheckBox9_Click()
SetCheckBoxes "CheckBox9"
End Sub
Private Sub CheckBox10_Click()
SetCheckBoxes "CheckBox10"
End Sub
Private Function SetCheckBoxes(mCheckBoxName As String)
Dim x As Long
Dim xAllArr
Dim xArrItem
Dim xI, xJ
If Not xBol Then Exit Function
'In the following line, the checkboxes enclosed in double quotes belong to the same group, and each checkbox is separated by a comma. To add more checkbox groups, please enclose the checkboxes in new double quotes.
xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10")
For xI = LBound(xAllArr) To UBound(xAllArr)
If InStr(xAllArr(xI), mCheckBoxName) > 0 Then
xBol = False
xArrItem = Split(xAllArr(xI), ",")
For xJ = LBound(xArrItem) To UBound(xArrItem)
If xArrItem(xJ) <> mCheckBoxName Then
Me.OLEObjects(xArrItem(xJ)).Object.Value = False
End If
Next
End If
Next
xBol = True
End Function
Private Sub Worksheet_Activate()
xBol = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
xBol = True
End Sub
免責事項:
3。 プレス 他の + Q を閉じるためのキー アプリケーション向け Microsoft Visual Basic 窓。
次に、グループ内の新しいチェックボックスをオンにすると、下の gif に示すように、元のチェックボックスが自動的にオフになります。
デモ: Excel でチェックボックスがオンになっているときに、別のチェックボックスをオフにします
Kutools for Excel Microsoft Excel の 300 以上の強力な機能が含まれています。 制限なしで無料で試すことができます 30 日。 ダウンロード中!
最高のオフィス生産性ツール
Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます
- 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
- スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
- セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
- [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
- 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
- テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
- スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
- ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
- 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。

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