一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

如何制作可以多項選擇的下拉菜單?

 軒南1sejnt2ii7 2019-05-25

動動鼠標,制作比數(shù)據(jù)有效性更炫酷的下拉菜單

然后更進一步的問題是,如何制作顯示多列同時可以選擇多項的下拉菜單?

比如下圖醬紫,顯示三列下拉菜單,可以選擇任意多個項目合并到一個單元格……

打個響指……發(fā)個廣告,待會回來。

.

假裝

廣告

.

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

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

具體步驟是在【開發(fā)工具】選項卡下單擊【插入】按鈕,在彈出來的選項菜單中選擇ActiveX控件列表框,畫在當(dāng)前工作表。位置隨便,大小不論,丑美無關(guān)……畢竟這些你說了都不算,待會代碼會設(shè)置。

需要說明的是,如果這是你放置的第1個列表框控件,它會被系統(tǒng)默認名稱為ListBox1。這個名字很重要,代碼里都是按這個名字控制它的。

最后退出設(shè)計模式,也就是點擊【開發(fā)工具】選項卡下的【設(shè)計模式】按鈕。

好了,把以下代碼復(fù)制粘貼到目標工作表的VBE編輯窗口即可。比如我們這里是粘貼到名稱為“入庫單”工作表。

代碼如下:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 2 Or Target.Row < 4 Then ListBox1.Visible = False: Exit Sub
    '如果選中的單元格不是第2列,或者小于4行,也就是不在目標范圍內(nèi),則退出程序
    If Target.Columns.Count > 1 Or Target.Rows.Count > 1 Then ListBox1.Visible = False: Exit Sub
    '如果選中的單元格大于1個,則退出程序
    With Sheets('參數(shù)表')
        r = .Range('a1:c' & .Cells(Rows.Count, 'a').End(xlUp).Row).Value
    End With
    With ListBox1
        '調(diào)整位置到單元格處
        .Top = Target.Top 'listbox的頂端位置
        .Left = Target.Left Target.Width 'listbox的左端位置
        .Width = 250 '寬度
        .Height = 150 '高度
        .Visible = True '可見
        '.ColumnHeads = True '顯示標題行
        .ColumnCount = 3 '三列
        .ColumnWidths = '50;120;50' '設(shè)置第一列寬度50第二列寬度120……
        .List = r '數(shù)據(jù)來源
        .MultiSelect = fmMultiSelectMulti '允許通過鼠標點擊的方式進行多選
        .ListStyle = fmListStyleOption '選項按鈕設(shè)置為方形
    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)
    '數(shù)據(jù)寫入單元格
End Sub

小貼士:

代碼有兩個部分,一部分是工作表的Worksheet_SelectionChange事件。當(dāng)用戶選擇單元格時,設(shè)置列表框的位置、大小和數(shù)據(jù)。本例中列表框只出現(xiàn)在B列,且行數(shù)大于3的情況下。這個可以根據(jù)實際情況,自己進行修改。

另一部分是列表框的ListBox1_Change事件,當(dāng)用戶選擇列表框的數(shù)據(jù)時,將數(shù)據(jù)寫入單元格。

其實相關(guān)代碼都有注釋,這里就不再啰嗦了。

示例文件下載:https://pan.baidu.com/s/1sKf9dl64E8ocKYWxY7Edng  提取碼:ebgb

晚安。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美黑人在线一区二区| 午夜免费精品视频在线看| 欧美精品在线播放一区二区| 免费观看成人免费视频| 亚洲天堂精品在线视频| 五月天婷亚洲天婷综合网| 亚洲精品国产福利在线| 99在线视频精品免费播放| 欧美一区二区黑人在线| 欧美一区二区口爆吞精| 九九视频通过这里有精品| 日本人妻中出在线观看| 九九热视频经典在线观看| 久久精品蜜桃一区二区av| 日本少妇三级三级三级| 亚洲熟女少妇精品一区二区三区| 日韩夫妻午夜性生活视频| 操白丝女孩在线观看免费高清| 亚洲中文字幕剧情在线播放| 精品国产亚洲免费91| 久久女同精品一区二区| 视频一区中文字幕日韩| 真实国产乱子伦对白视频不卡| 日韩欧美一区二区黄色| 伊人色综合久久伊人婷婷| 欧美日韩综合在线第一页| 日韩在线精品视频观看| 久久国产亚洲精品成人| 国产av一区二区三区麻豆| 亚洲国产丝袜一区二区三区四| 国产爆操白丝美女在线观看| 夫妻性生活真人动作视频 | 亚洲中文字幕综合网在线| 日韩一级一片内射视频4k| 太香蕉久久国产精品视频| 人妻久久一区二区三区精品99| 国产精品一区二区视频| 欧美精品一区久久精品| 在线免费看国产精品黄片| 精品国产日韩一区三区| 亚洲熟妇av一区二区三区色堂|