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