zoukankan      html  css  js  c++  java
  • Excel怎么下拉框多选

    打开Exlce,

    确定,然后

    右击查看代码,把这段代码复制到新建的文件里面

    此时Excel会给出提示,选择否,,系统会提示保存,在保存的时候选择启用宏的工作簿然后保存,此时Excel下拉框多选就搞定了,最后,代码如下:

    Option Explicit
    
    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 oldVal = "" Then
    Else
    If newVal = "" Then
    Else
    Target.Value = oldVal _
    & ", " & newVal
    End If
    End If
    End If
    
    exitHandler:
    Application.EnableEvents = True
    End Sub
    

    优化后的代码

    Option Explicit
     
    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 oldVal = "" Then
    Else
    If newVal = "" Then
    Else
    If Target.Column <> 2 And Target.Column <> 3 And Target.Column <> 5 Then
    Dim oldValArray
    oldValArray = Split(oldVal, ",")
    Dim exitVal As Boolean
    exitVal = False
    Dim i As Integer
    Dim resultVal As String
    For i = 0 To UBound(oldValArray)
      If oldValArray(i) = newVal Then
        exitVal = True
      Else
        If resultVal = "" Then
          resultVal = oldValArray(i)
        Else
          resultVal = resultVal & "," & oldValArray(i)
        End If
      End If
    Next
    If exitVal = False Then
       If oldVal = newVal Then
         Target.Value = resultVal
       Else
         Target.Value = resultVal & "," & newVal
       End If
    Else
    Target.Value = resultVal
    End If
    End If
    End If
    End If
    End If
     
    exitHandler:
    Application.EnableEvents = True
    End Sub
    

      

       

    转载自:https://www.cnblogs.com/boosasliulin/p/5970120.html

  • 相关阅读:
    3747 [POI2015]Kinoman
    1303 [CQOI2009]中位数图
    3769 [spoj 8549] BST again
    1015 [JSOI2008]星球大战starwar
    1193 [HNOI2006]马步距离
    合并Git仓库不相关历史版本解决方案
    vue-cli项目实现动态锚点定位
    jQuery加css3实现菜单栏组件(可无限添加子列表)
    JavaScript文件转成base64编码
    Ajax获取服务器响应头部信息
  • 原文地址:https://www.cnblogs.com/guohu/p/9518437.html
Copyright © 2011-2022 走看看