<object id="gqpoj"><strong id="gqpoj"></strong></object>
    <acronym id="gqpoj"><label id="gqpoj"><address id="gqpoj"></address></label></acronym>
  • <acronym id="gqpoj"><label id="gqpoj"><xmp id="gqpoj"></xmp></label></acronym>

      1. 怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

        時間:2023-04-06 17:22:37

        作者:yanmin

        來源:系統部落

          今天小編給大家分享的表格小技巧是:如何制作顯示多列同時可以選擇多項的下拉菜單?比如下圖,顯示三列下拉菜單,可以選擇任意多個項目合并到一個單元格,步驟超級簡單,小編親測有效。

        怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

          怎么在excel單元格里設置選項可以多選?

          1、首先,咱們得有個數據表,用來填充選項菜單的數據。嗯,我們把這份工作表命名為“參數表”,數據如下圖所示。A列是商品代碼,B列是商品,C列是負責人。

        怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

          2、然后,我們在需要制作選項菜單的工作表放一個列表框控件。

          3、在【開發工具】選項卡下單擊【插入】按鈕,在彈出來的選項菜單中選擇ActiveX控件列表框,畫在當前工作表。位置隨便,大小不論,丑美無關……畢竟這些你說了都不算,待會代碼會重置。

        怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

          需要說明的是,如果這是你在當前工作簿放置的第1個列表框控件,它會被系統默認名稱為ListBox1。名字很重要,——下面的代碼,我們都是通過名字來控制控件的一生的。

          4、最后退出設計模式,也就是點擊【開發工具】選項卡下的【設計模式】按鈕。

        怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

          5、OK,最后把以下代碼復制粘貼到目標工作表的VBE編輯窗口即可。比如我們這里是粘貼到名稱為“入庫單”工作表。

        怎么在excel單元格里設置選項可以多選?(超簡單,親測有效)

          代碼如下:

        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
            If Target.Column <> 2 Or Target.Row < 4 Then ListBox1.Visible = False: Exit Sub
            '如果選中的單元格不是第2列,或者小于4行,也就是不在目標范圍內,則退出程序
            If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then ListBox1.Visible = False: Exit Sub
            '如果選中的單元格大于1個,則退出程序
            With Sheets("參數表")
                r = .Range("a1:c" & .Cells(Rows.Count, "a").End(xlUp).Row).Value
            End With
            With ListBox1
                '調整位置到單元格處
                .Top = Target.Top 'listbox的頂端位置
                .Left = Target.Left + Target.Width 'listbox的左端位置
                .Width = 250 '寬度
                .Height = 150 '高度
                .Visible = True '可見
                '.ColumnHeads = True '顯示標題行
                .ColumnCount = 3 '三列
                .ColumnWidths = "50;120;50" '設置第一列寬度50第二列寬度120……
                .List = r '數據來源
                .MultiSelect = fmMultiSelectMulti '允許通過鼠標點擊的方式進行多選
                .ListStyle = fmListStyleOption '選項按鈕設置為方形
            End With
        End Sub
        
        Private Sub ListBox1_Change()
            Dim i As Long, strMy As String
            With ListBox1
                If .Selected(0) = True Then .Selected(0) = False
                '如果用戶選取的是標題行那么撤銷選取
                For i = 1 To .ListCount - 1
                '遍歷listbox的記錄,如果被選中則按換行符合并
                    If .Selected(i) = True Then
                        strMy = strMy & vbCrLf & .List(i, 1)
                        '取list的第二列
                        '無論列還是行的索引都是從0開始的,因此第二列為1
                    End If
                Next
            End With
            ActiveCell.Value = Mid(strMy, 3)
            '數據寫入單元格
        End Sub
        

          代碼組成說明

          1、一部分是工作表的Worksheet_SelectionChange事件。當用戶選擇目標范圍內的單元格時,顯示設置列表框的位置、大小和數據。本例中列表框只出現在B列,且行數大于3的情況下。這個可以根據實際情況,自己進行修改。

          2、另一部分是列表框的ListBox1_Change事件,當用戶選擇列表框的數據時,將數據寫入單元格。相關代碼都有注釋。

        相關推薦

        評論加載中...
        提取碼
        XGZS
        關閉 前往下載
        BABESCOM欧美熟妇_日韩欧美国产综合在线_亚洲国产性交美国av综合_国产盗摄视频在线

        <object id="gqpoj"><strong id="gqpoj"></strong></object>
        <acronym id="gqpoj"><label id="gqpoj"><address id="gqpoj"></address></label></acronym>
      2. <acronym id="gqpoj"><label id="gqpoj"><xmp id="gqpoj"></xmp></label></acronym>