zoukankan      html  css  js  c++  java
  • Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值

    在很多的报表开发中,需要用到VBA去设置Excel的一些规则。 

    以下是一个根据下拉框单元格的值来给特定单元格进行赋值的代码:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        On Error Resume Next:
        Application.ScreenUpdating = False
        If Target.Column = 7 Then        // 这是需要赋值的DDL列
            If Target.Offset(0, -2).Value = 13 Then  //表示赋值列往前移动两个单位的格子值
                With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                 xlBetween, Formula1:="No"   //赋值为No
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .IMEMode = xlIMEModeNoControl
                .ShowInput = True
                .ShowError = True
                End With
            ElseIf Target.Offset(0, -2).Value <> 13 Then
                With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                 xlBetween, Formula1:="=Exp"  //这里的Exp为自定义名字的列作为数据来源(Formulas -〉Name managers ) 
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .IMEMode = xlIMEModeNoControl
               .ShowInput = True
                .ShowError = True
                End With
            End If
        ElseIf Target.Column = 8 Then   //下面的逻辑用来控制,当第7列值为No时,会把第8,910,11列保护起来不能输入
            If Target.Offset(0, -1).Value = "No" Then
                Target.Locked = True
                Target.Offset(1, -6).Select
            End If
        ElseIf Target.Column = 9 Then
            If Target.Offset(0, -2).Value = "No" Then
                Target.Locked = True
                Target.Offset(1, -7).Select
            End If
        ElseIf Target.Column = 10 Then
            If Target.Offset(0, -3).Value = "No" Then
                Target.Locked = True
                Target.Offset(1, -8).Select
            End If
        ElseIf Target.Column = 11 Then
            If Target.Offset(0, -4).Value = "No" Then
                Target.Locked = True
                Target.Offset(1, -9).Select
            End If
        End If
        Application.ScreenUpdating = True
         
    End Sub
  • 相关阅读:
    linux下activemq安装与配置
    Linux设置开放一个端口
    使用codis-admin搭建codis集群
    elasticsearch7.0安装及配置优化
    ELK详细安装部署
    filebeat安装部署
    ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决
    手把手教你搭建一个 Elasticsearch 集群
    ES 集群管理(集群规划、集群搭建、集群管理)
    Elasticsearch如何关掉服务
  • 原文地址:https://www.cnblogs.com/Aaron-Lee/p/9962690.html
Copyright © 2011-2022 走看看