Excel VBA脚本“在另一个单元格中按值强制值”

时间:2015-12-23 16:06:44

标签: excel vba excel-vba

我有一个包含3列的Excel电子表格,可以在单独的部分中进行计算。其中两列是手动输入,第三列是下拉菜单,您可以在其中选择“y”或“n”。我正在尝试编写一个VBA代码,允许您从下拉菜单中选择“y”或“n”,但如果任一手动输入列为“0”,它将自动强制值为“n”。

1 个答案:

答案 0 :(得分:0)

选项1(无代码)

您可以添加第四列,并设置其他工作表以查看该列。如果您的值在A列和A列中B,你的数据验证在C列,然后你可以在D列做一些简单的逻辑并使用该值作为参考:

=IF(OR(A1=0,B1=0),"n",C1)

enter image description here

选项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