KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中勾選一個核取方塊時,自動取消勾選另一個?

作者Siluvia修改日期

在許多實際應用情境中,例如使用 Excel 管理冗長的採購清單時,您可能會需要確保在特定類別或群組內僅能選擇一個選項。舉例來說,若某些類別超出預算,您可能必須重新挑選項目,使每個群組僅保留一個勾選項目。在大型清單中手動管理核取方塊不僅效率低下,還容易出錯,尤其當類別數量增加時更是如此。為簡化此流程並降低錯誤率,您可以設定 Excel,讓使用者在群組內勾選新項目時,自動取消先前已選的項目,確保每個類別在任何時間點都只有一個選項被選取。本文提供逐步指南,協助您輕鬆實現此功能,讓工作流程更高效、更可靠。


透過 VBA 程式碼,在勾選新核取方塊時自動取消勾選其他核取方塊

為說明操作流程,請參考上方影片所示情境:您有十個核取方塊,標示為 CheckBox 1CheckBox 10,並依不同採購類別分為三個群組。

✅ 群組結構:

  • 群組 1:CheckBox 1、CheckBox 2、CheckBox 3
  • 群組 2:CheckBox 4、CheckBox 5、CheckBox 6、CheckBox 7
  • 群組 3:CheckBox 8、CheckBox 9、CheckBox 10

每個群組內僅可同時選取一個核取方塊。當您勾選新的核取方塊時,同群組內的其他項目會自動取消勾選——效果如同選項按鈕,卻以核取方塊呈現。

🧩 套用 VBA 解決方案的步驟:

  1. 開啟 VBA 編輯器:在放置核取方塊的工作表標籤上按一下滑鼠右鍵,然後選擇檢視程式碼
  2. 檢視程式碼選單
  3. 將下列程式碼貼上至工作表的程式碼視窗中:
  4. Dim xBol As Boolean
    'Updated by Extendoffice
    
    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 xAllArr, xArrItem
        Dim xI, xJ
        If Not xBol Then Exit Function
        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
  5. 關閉 VBA 編輯器(Alt + Q),返回 Excel 測試核取方塊。

📌 重要注意事項:

  • 請確保您的核取方塊名稱屬性(非標籤)與程式碼中的名稱完全一致。
  • 群組定義於陣列列中:
    xAllArr = Array("CheckBox1,CheckBox2,CheckBox3", "CheckBox4,CheckBox5,CheckBox6,CheckBox7", "CheckBox8,CheckBox9,CheckBox10")
  • 此 VBA 僅適用於 ActiveX 控制項核取方塊,不適用於表單控制項。
  • 必須啟用巨集,此自動化功能才能順利運作。

📺 示範影片:

🔍 疑難排解提示:

  • 請確認核取方塊名稱沒有重複。
  • 請確保所有核取方塊均為 ActiveX 控制項
  • 每個核取方塊程序都必須正確呼叫 SetCheckBoxes
  • 跨工作表的設定需透過類別模組或集中式控制進行調整。

💡 替代方案:您可以使用表單控制項中的選項按鈕,享受內建的單一選取功能。然而,若需要更靈活的版面配置與邏輯控制,搭配 VBA 的核取方塊將是更具彈性的選擇!

✨ 提示:像 Kutools for Excel 這類工具提供圖形化介面,讓您無需編寫程式碼即可輕鬆管理與設定核取方塊。


示範:在 Excel 中勾選一個核取方塊時自動取消勾選另一個

 
Kutools for Excel:超過 300 種實用工具隨手可得!盡享 AI 驅動功能,讓工作更聰明、更快速!立即下載!

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用