Note: The other languages of the website are Google-translated. Back to English

如何在Excel中使用多個複選框創建下拉列表?

許多Excel用戶傾向於創建帶有多個複選框的下拉列表,以便每次都從列表中選擇多個項目。 實際上,您無法使用數據驗證功能創建帶有多個複選框的列表。 在本教程中,我們將向您展示兩種在Excel中創建帶有多個複選框的下拉列表的方法。

使用列錶框創建帶有多個複選框的下拉列表
答:使用源數據創建一個列錶框
B:命名您將找到所選項目的單元格
C:插入形狀以幫助輸出所選項目
使用功能強大的複選框輕鬆創建帶有復選框的下拉列表
下拉列表的更多教程...


使用列錶框創建帶有多個複選框的下拉列表

如下面的屏幕截圖所示,在當前工作表中,範圍A2:A11中的所有名稱將成為列錶框的源數據。 單擊單元格C4中的按鈕可以輸出選定的項目,列錶框中的所有選定項目將顯示在單元格E4中。 為此,請執行以下操作。

A.創建一個帶有源數據的列錶框

1。 點擊 開發人員 > 插入 > 列錶框(Active X控件)。 看截圖:

2.在當前工作表中繪製一個列錶框,右鍵單擊它,然後選擇 氟化鈉性能 從右鍵單擊菜單中。

3。 在裡面 氟化鈉性能 對話框,您需要配置如下。

  • 3.1在 列表填充範圍 框,輸入您將在列表中顯示的來源範圍(此處輸入範圍 A2:A11);
  • 3.2在 列表樣式 框中選擇 1-fmList StyleOption;
  • 3.3在 多選 框中選擇 1 – fmMultiSelectMulti;
  • 3.4關閉 氟化鈉性能 對話框。 看截圖:

B:命名您將找到所選項目的單元格

如果需要將所有選擇的項目輸出到指定的單元格(例如E4)中,請執行以下操作。

1.選擇單元格E4,輸入 列錶框輸出名稱框 並按下 Enter 鍵。

C.插入形狀以幫助輸出所選項目

1。 點擊 插入 > 形狀 > 長方形。 見截圖:

2.在工作表中繪製一個矩形(此處在單元格C4中繪製該矩形)。 然後右鍵單擊矩形並選擇 分配宏 從右鍵單擊菜單中。

3。 在裡面 分配宏 對話框中,單擊 全新 按鈕。

4.在開幕 Microsoft Visual Basic for Applications 窗口,請替換原始代碼 模塊 帶有以下VBA代碼的窗口。

VBA代碼:創建帶有多個複選框的列表

Sub Rectangle1_Click()
'Updated by Extendoffice 20200730
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
    xLstBox.Visible = True
    xSelShp.TextFrame2.TextRange.Characters.Text = "Pickup Options"
    xStr = ""
    xStr = Range("ListBoxOutput").Value
    
    If xStr <> "" Then
         xArr = Split(xStr, ";")
    For I = xLstBox.ListCount - 1 To 0 Step -1
        xV = xLstBox.List(I)
        For J = 0 To UBound(xArr)
            If xArr(J) = xV Then
              xLstBox.Selected(I) = True
              Exit For
            End If
        Next
    Next I
    End If
Else
    xLstBox.Visible = False
    xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
    For I = xLstBox.ListCount - 1 To 0 Step -1
        If xLstBox.Selected(I) = True Then
        xSelLst = xLstBox.List(I) & ";" & xSelLst
        End If
    Next I
    If xSelLst <> "" Then
        Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
    Else
        Range("ListBoxOutput") = ""
    End If
End If
End Sub

備註: 在代碼中 矩形1 是形狀名稱; ListBox1 是列錶框的名稱; 選擇選項接送選項 是形狀顯示的文字; 和 列錶框輸出 是輸出單元格的範圍名稱。 您可以根據需要進行更改。

5。 按 其他 + Q 同時關閉按鍵 Microsoft Visual Basic for Applications 窗口。

6.單擊矩形按鈕將折疊或展開列錶框。 當列錶框展開時,檢查列錶框中的項目,然後再次單擊矩形以將所有選定的項目輸出到單元格E4中。 參見下面的演示:

7.然後將工作簿另存為 Excel MacroEnable工作簿 用於將來重用代碼。


使用功能強大的工具創建帶有復選框的下拉列表

上述方法過於復雜,難以處理。 在這裡強烈推薦 帶有復選框的下拉列表 的效用 Kutools用於 Excel 幫助您輕鬆創建帶有指定範圍,當前工作表,當前工作簿或所有打開的工作簿的複選框的下拉列表(根據您的需要)。 請參見下面的演示:
立即下載並嘗試! (30天免費試用)

除了上述演示之外,我們還提供了逐步指南,以演示如何應用此功能來完成此任務。 請執行以下操作。

1.打開已設置數據驗證的工作表下拉列表,單擊 庫工具 > 下拉列表 > 帶有復選框的下拉列表 > 設置。 見截圖:

2。 在裡面 下拉列表和復選框設置 對話框,請進行以下配置。

  • 2.1)在 適用於 部分,指定您將在其中創建下拉列表中項目複選框的應用範圍。 您可以指定一個 一定範圍, 當前工作表, 當前工作簿 or 所有打開的工作簿 根據您的需求。
  • 2.2)在 模式 部分中,選擇要輸出所選項目的樣式;
  • 這裡需要 修改 選項為例,如果選擇此選項,則單元格值將根據所選項目進行更改。
  • 2.3)在 分離器 框,輸入一個定界符,您將使用該定界符將多個項目分開;
  • 2.4)在 文本方向 部分,根據需要選擇文本方向;
  • 2.5)點擊 OK 按鈕。

3.最後一步,單擊 庫工具 > 下拉列表 > 帶有復選框的下拉列表 > 啟用複選框的下拉列表 激活此功能。

從現在開始,當您單擊指定範圍內帶有下拉列表的單元格時,將彈出一個列錶框,請選中復選框以選擇項目以輸出到單元格中,如下圖所示(以“修改”模式為例) )。

有關此功能的更多詳細信息, 請訪問這裡.

  如果您想免費試用該工具(30天), 請點擊下載,然後按照上述步驟進行操作。


相關文章:

在Excel下拉列表中鍵入時自動完成
如果您有一個包含大值的數據驗證下拉列表,則需要在列表中向下滾動以查找合適的列表,或直接在列錶框中鍵入整個單詞。 如果在下拉列表中鍵入第一個字母時有允許自動完成的方法,一切將變得更加容易。 本教程提供了解決問題的方法。

在Excel中從另一個工作簿創建下拉列表
在工作簿中的工作表之間創建數據驗證下拉列表非常容易。 但是,如果數據驗證所需的列表數據位於另一個工作簿中,您將怎麼辦? 在本教程中,您將詳細了解如何從Excel中的另一個工作簿創建拖放列表。

在Excel中創建可搜索的下拉列表
對於具有眾多價值的下拉列表,找到合適的價值並非易事。 以前,我們已經介紹了一種在下拉框中輸入第一個字母時自動完成下拉列表的方法。 除了自動完成功能之外,您還可以使下拉列表可搜索,以提高在下拉列表中查找適當值時的工作效率。 為了使下拉列表可搜索,請嘗試本教程中的方法。

在Excel下拉列表中選擇值時自動填充其他單元格
假設您已經根據單元格區域B8:B14中的值創建了一個下拉列表。 在下拉列表中選擇任何值時,都希望在選定單元格中自動填充單元格範圍C8:C14中的相應值。 為了解決該問題,本教程中的方法將對您有所幫助。

下拉列表的更多教程...


最佳辦公效率工具

Kutools for Excel解決了您的大多數問題,並使您的生產率提高了80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過300種強大功能。 支持Office / Excel 2007-2019和365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能30天免費試用。 60天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 每天將您的工作效率提高50%,並減少數百次鼠標單擊!
officetab底部
按評論排序
留言 (67)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
這是太棒了。 但是如果可以將多選放置在光標處於活動狀態的位置會更好。 不一定是代碼指定的。
網站主持人對此評論進行了最小化
這正是我一直在尋找的,是否可以修改代碼以允許所選數據顯示在列下方的單獨單元格中? 所以而不是:星期一,星期二,星期三,顯示為。 星期一星期二星期三
網站主持人對此評論進行了最小化
這正是我一直在尋找的,是否對代碼進行了修改,將列錶框中的下一個選擇放在下一行。 例如一二三而不是:一、二、三
網站主持人對此評論進行了最小化
你能解釋一下你是如何在 E4 單元格上添加 ListBoxOutput 的嗎
網站主持人對此評論進行了最小化
您好如何為多個單元格複製此列錶框。 只是複制和粘貼是行不通的。 您能否例如在每個單元格(E5、E6、E7、E8、...)中解釋一下,我該如何放置這個選擇框?
網站主持人對此評論進行了最小化
您能否解釋一下如何輕鬆複製此列錶框 100 行? (為 100 行中的每一行單獨的列錶框)
網站主持人對此評論進行了最小化
一旦輸出完成並再次按下按鈕,列錶框中先前選擇的項目將無法更改。 如何解決?
網站主持人對此評論進行了最小化
謝謝! 這很棒,而且有效!
網站主持人對此評論進行了最小化
我是這方面的新手,但誰能告訴我如何創建一個多選列錶框,例如,當我選擇一個名字時。 我希望列錶框適合單個。
示例:我有一個包含聯繫信息等的姓名列表。我想為列表中的每個姓名創建一個重複的列錶框。 我希望它在我選擇一個名稱時自動打開,並在我轉到另一行信息時折疊回單元格。 請指教。 提前致謝。
網站主持人對此評論進行了最小化
親愛的蘭迪,
抱歉無法解決這個問題。
網站主持人對此評論進行了最小化
它按照說明完美運行,但是如果我保護它給出的工作表並出錯。 有什麼解決方法嗎?
網站主持人對此評論進行了最小化
按照說明完美工作。 但是,我如何在受保護的工作表上使用它。 目前,如果我在保護工作表後使用它,它會給我和錯誤“運行時錯誤'-2147024809(80070057)':指定值超出範圍”
網站主持人對此評論進行了最小化
親愛的阿米特·蘇德,
在保護工作表之前,請將輸出單元格格式化為解鎖,然後應用下面的 VBA 代碼。 感謝您的評論。

子矩形2_Click()
將 xSelShp 調暗為形狀,xSelLst 調為變體,I 調為整數
在錯誤恢復下一頁
設置 xSelShp = ActiveSheet.Shapes(Application.Caller)
設置 xLstBox = ActiveSheet.ListBox1
如果 xLstBox.Visible = False 那麼
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "拾取選項"
其他
xLstBox.Visible = False
xSelShp.TextFrame2.TextRange.Characters.Text = "選擇選項"
對於 I = xLstBox.ListCount - 1 到 0 步 -1
如果 xLstBox.Selected(I) = True 那麼
xSelLst = xLstBox.List(I) & ";" & xSelLst
如果結束
接下來我
如果 xSelLst <> "" 那麼
Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
其他
範圍(“列錶框輸出”)=“”
如果結束
如果結束
END SUB
網站主持人對此評論進行了最小化
“我已經使用 ActiveX 列錶框創建了一個文件,正如您所解釋的那樣,我已經輸入了一些數據並添加了一些屬性。我使用列表中的複選框檢查了一些數據,並保存並退出文件。但是雖然重新打開文件,它沒有顯示任何檢查的數據..任何人都可以給我一個建議來保存這些更新。”
任何人都可以幫助我嗎?
網站主持人對此評論進行了最小化
美好的一天,
請將以下 VBA 代碼放入 ThisWorkbook 代碼窗口。
在代碼中,Sheet6 是工作表的默認名稱,其中包含要保留選擇的列錶框,如下圖所示。 ListBox1 是列錶框的名稱。 請根據需要更改它們。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
調用 SaveSelections
END SUB

私人子工作簿_打開()
調用 RestoreSelections
END SUB

私人子 SaveSelections()

Dim arr() As Variant, i As Long, j As Long

使用 Sheet6.OLEObjects("ListBox1").Object
如果 .ListIndex > 0 那麼
對於 i = 0 到 .ListCount - 1
如果 .Selected(i) 那麼
j = j + 1
ReDim Preserve arr(1 To j)
arr(j) = 我
如果結束
下一頁
Names.Add Name:="Selections", RefersTo:=arr, Visible:=False
如果結束
結束

END SUB

私有子恢復選擇()

Dim arr 作為變體,i 作為整數

arr = [選擇]

使用 Sheet6.OLEObjects("ListBox1").Object
對於 i = 1 到 UBound(arr)
.Selected(arr(i)) = True
下一頁
結束

END SUB
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
謝謝您的回复,先生,但在我的文件的情況下它不起作用,請您發送您的郵件ID,以便我可以將我的文件郵寄給您。
預先感謝
網站主持人對此評論進行了最小化
親愛的文殊菩薩,
請將您的文件發送至 zxm@addin99.com。 希望我能幫上忙。
網站主持人對此評論進行了最小化
此外,您需要將工作簿保存為啟用 Excel 宏的工作簿,並在每次更改列錶框的選擇時激活代碼。
網站主持人對此評論進行了最小化
我想自動更新不同列中的名稱。 如果可能的話,是否有可能請分享我的代碼。
網站主持人對此評論進行了最小化
令人驚嘆的工作,但是在我關閉 excel 並再次打開它之後,複選框中的檢查消失了,所以如果我單擊按鈕,所有列表都將消失,任何解決方案都將消失
請有人幫助我
非常感謝您的先進
網站主持人對此評論進行了最小化
親愛的天使,
我們發表了一篇文章“如何在 Excel 中保存或保留 ActiveX 列錶框的選擇?” 其中介紹了在關閉並重新打開工作簿後保存列錶框選擇的方法。
您可以點擊此鏈接獲取更多信息: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
網站主持人對此評論進行了最小化
令人驚訝的是它的工作原理,但是在我保存文件並再次打開它後我遇到了一個問題,複選框列表中的所有檢查都消失了
你能幫我做這個嗎 非常感謝
網站主持人對此評論進行了最小化
此外,它總是在保存並再次打開文件後更改列錶框的大小和形狀,如果有人對此問題有解決方案,請幫助我

非常感謝你
網站主持人對此評論進行了最小化
親愛的馬克,
我們發表了一篇文章“如何在 Excel 中保存或保留 ActiveX 列錶框的選擇?” 其中介紹了在關閉並重新打開工作簿後保存列錶框選擇的方法。
您可以點擊此鏈接獲取更多信息: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
網站主持人對此評論進行了最小化
你好,

我想知道是否有一種方法可以將拾取選項定向到多個單元格(不僅僅是 E4),或者將選擇設置為下拉清單,以便我可以從清單中選擇多個選項,但重複這樣做並且獨立於我所做的其他選擇。 例如,我將如何使用相同的取件選項列表從同一取件列表中輸入 E5、E6、E7 等的不同項目選擇。

謝謝
網站主持人對此評論進行了最小化
嗨 LizKats,
請嘗試以下代碼。 希望我能幫上忙。 謝謝你。

子矩形2_Click()

'更新者 Extendoffice 20200529

將 xSelShp 調暗為形狀,xSelLst 調為變體,i 調為整數

設置 xSelShp = ActiveSheet.Shapes(Application.Caller)

設置 xLstBox = ActiveSheet.ListBox1

將 xRg 調暗為範圍

將 xCount、xFNum、xR、xC 調暗為整數

將 xStr 調暗為字符串

如果 xLstBox.Visible = False 那麼

xLstBox.Visible = True

xSelShp.TextFrame2.TextRange.Characters.Text = "拾取選項"

其他

xLstBox.Visible = False

xSelShp.TextFrame2.TextRange.Characters.Text = "選擇選項"

設置 xRg = Range("ListBoxOutput")

xCount = xLstBox.ListCount - 1

xStr = ""

對於 i = xLstBox.ListCount - 1 到 0 步 -1

如果 xLstBox.Selected(i) = True 那麼

xStr = xLstBox.List(i) & ";" &xStr

如果結束

接下來,我



如果 xRg.Value = "" 那麼

xRg.Value = xStr

其他

設置 xRg = xRg.Offset(1, 0)

當 xRg.Value <> ""

設置 xRg = xRg.Offset(1, 0)

循環

xRg.Value = xStr

如果結束

如果結束

END SUB
網站主持人對此評論進行了最小化
它工作正常,非常感謝您的幫助。 我這裡有一個問題是,所有的輸出都在同一個單元格 E4 中,我們如何在不同的單元格中獲得輸出例如:E4 中的 C4、E5 中的 C5、E6 中的 C6 等的輸出。
網站主持人對此評論進行了最小化
美好的一天,
你說的問題還不能解決。
網站主持人對此評論進行了最小化
Добрый день! Прошу помочь。
Как сделать так чтобы каждое значение выходило на новой клетке? чтобы по выходило по вертикали?
網站主持人對此評論進行了最小化
幫助!!! 如何在不同範圍內(垂直)輸出?
網站主持人對此評論進行了最小化
子矩形2_Click()
'更新者 Extendoffice 20190924
將 xSelShp 調暗為形狀,xSelLst 調為變體,I 調為整數
將 xRg 調暗為範圍
設置 xSelShp = ActiveSheet.Shapes(Application.Caller)
設置 xLstBox = ActiveSheet.ListBox1
如果 xLstBox.Visible = False 那麼
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "拾取選項"
其他
xLstBox.Visible = False
xSelShp.TextFrame2.TextRange.Characters.Text = "選擇選項"
設置 xRg = Range("ListBoxOutput")
對於 I = 0 到 xLstBox.ListCount - 1
如果 xLstBox.Selected(I) = True 那麼
xSelLst = xLstBox.List(I)
xRg.Value = Mid(xSelLst, 1, Len(xSelLst))
設置 xRg = xRg.Offset(1, 0)
如果結束
接下來我
如果結束
END SUB
網站主持人對此評論進行了最小化
Como puedo 複製品 éste ejercicio en las filas loweres ?
我怎樣才能在下面的行中復制這個練習?
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點