Excel VBA脚本“通过另一个单元格中的值强制值”
我有一个excel电子表格,有3列,在单独的部分驱动计算。 其中两列是手动input,第三列是下拉菜单,您可以select“y”或“n”。 我试图编写一个VBA代码,允许您从下拉菜单中select“y”或“n”,但是如果手动input列中的任何一个为“0”,它将自动强制为“n”。
选项1(无代码)
您可以添加第四列,并设置其他工作表以查看该列。 如果你的值在列A和B中,你的数据validation在列C中,那么你可以在列D中做一些简单的逻辑,并使用该值作为参考:
=IF(OR(A1=0,B1=0),"n",C1)
选项2 – VBA
当任何单元格更改时,使用工作表上的更改事件检查行中的值,如果任一值等于0,则更新为“n”:
把这段代码放在模块中,让它运行的工作表对象(不在它自己的模块中)。
注意:我已经设置它只在1-3列上运行( Target.Column <=3
),如果你的列在不同的地方,你需要改变它。
另外,我添加了application.enableevents
行来停止单元格更改,触发另一个单元格更改事件并进入无限循环。
Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Set ws = Target.Worksheet If Target.Column <= 3 Then If ws.Cells(Target.Row, 1) = 0 Or ws.Cells(Target.Row, 2) = 0 Then Application.EnableEvents = False ws.Cells(Target.Row, 3) = "n" Application.EnableEvents = True End If End If End Sub