Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值
Posted Aaron_M
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,9,10,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
以上是关于Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA/Formula 用于根据 2 个其他单元格的值填充 3 个特定单元格