美文网首页高效工作
excel设置下拉框多选

excel设置下拉框多选

作者: snowgrain | 来源:发表于2018-07-07 18:40 被阅读147次

    在一个系统刚上线时,需要把以前的数据导入系统,方便使用与管理,程序不是万能的,导入表格要符合系统要求的规则才能顺利地导入。在整理庞大而又繁琐的数据时,为了减少系统报错的概率,可以事先对excel的表格格式做处理。文章里要说的是一个不常用到的一个小技巧-----下拉框多选。我问了百度,找到了一些方法,把最简单最快捷的方法给出来,像我一样不懂宏不懂代码的小伙伴可以看下。

    首先在某列利用数据有效性-建立下拉菜单表。数据-->数据有效性-->数据有效性,“允许”选择“序列”,然后把需要选择的内容输入到来源里,中间用英文逗号“,”隔开。下拉框单选便成了。

    设置单选的下拉框 单选下拉框

    然后在下拉表所打开的sheet中(如sheet1),鼠标右击下面的工作表,选择“查看代码”,就可打开VBA编辑界面。复制下方的代码,并将其中一行的   If Target.Column = 7 Then    中的7修改为下拉数据表所在的列数,搞定。第几列便是数字几,A是1,B是2,以此类推。

    7这个数字代表第几列

    表格中两个选项间用中文逗号、英文逗号、顿号、横杠等等符号隔开,把下面两句代码中双引号间的符号改为想要的符号即可,注意二者要保持一致。

    选项间的间隔符号

    代码:

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rngDV As Range

    Dim oldVal As String

    Dim newVal As String

    If Target.Count > 1 Then GoTo exitHandler

    On Error Resume Next

    Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)

    On Error GoTo exitHandler

    If rngDV Is Nothing Then GoTo exitHandler

    If Intersect(Target, rngDV) Is Nothing Then

      'do nothing

    Else

      Application.EnableEvents = False

      newVal = Target.Value

      Application.Undo

      oldVal = Target.Value

      Target.Value = newVal

      If Target.Column = 7 Then 

        If oldVal = "" Then

          'do nothing

          Else

          If newVal = "" Then

          'do nothing

          Else

            If InStr(1, oldVal, newVal) <> 0 Then  

              If InStr(1, oldVal, newVal) + Len(newVal) - 1 = Len(oldVal) Then 

                Target.Value = Left(oldVal, Len(oldVal) - Len(newVal) - 1)

              Else

                Target.Value = Replace(oldVal, newVal & ",", "")

              End If

            Else 

            Target.Value = oldVal & "," & newVal

    '      NOTE: you can use a line break,

    '      instead of a comma

    '      Target.Value = oldVal _

    '        & Chr(10) & newVal

            End If

          End If

        End If

      End If

    End If

    exitHandler:

      Application.EnableEvents = True

    End Sub

    代码来源:知乎

    链接:https://www.zhihu.com/question/20484204/answer/142569580

    说明:代码中 ' 后面的内容为说明文字,可以删除,不影响代码的执行,放在excel里会变为绿色,这些只是说明。当然也可以加 ' ,然后加入自己要说明的东西。

    “ ‘ ” 后面的内容为说明,可删除

    额外说明:

    excel保存时会提示宏无法保存,这个问题目前还没研究出来,庆幸本次的设计只是给自己公司内部人用的,所以只能复制代码给他们,让他们自己复制一遍了。

    如果哪位大神有解决办法,望赐教~~

    相关文章

      网友评论

      • 山_磊:这个提示是因为默认的后缀不支持宏,保存后,宏代码会丢失,解决办法是保存为启用宏的工作簿,后缀是xlsm

      本文标题:excel设置下拉框多选

      本文链接:https://www.haomeiwen.com/subject/xlnwyftx.html