我有一个包含3列的Excel电子表格,可以在单独的部分中进行计算。其中两列是手动输入,第三列是下拉菜单,您可以在其中选择“y”或“n”。我正在尝试编写一个VBA代码,允许您从下拉菜单中选择“y”或“n”,但如果任一手动输入列为“0”,它将自动强制值为“n”。
答案 0 :(得分:0)
选项1(无代码)
您可以添加第四列,并设置其他工作表以查看该列。如果您的值在A列和A列中B,你的数据验证在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