我在一个名为A1和A2的电子表格中有两列。输入的数据只能是“Y”或“N”。但是,A1和A2不能为同一记录具有相同的条目。例如,如果记录#3中A1的值为“Y”,则记录#3中的A2值必须为“N”。并且不能是“Y”。另外,如果记录#3中的A1是“N”,则A2必须是“Y”。换句话说,A1和A2在同一记录中不能有相同的条目。 是否有意义? 什么是最好的方法呢?使用VBA?或使用工作表控件?
到目前为止,我在Submit_click子中写了一个简单的条件: 如果Range(A1).value = Range(A2).value则 MSGBOX( “.....”)
但这与我在Worksheet_beforeClose中的save函数冲突。当用户在没有提交的情况下关闭工作表时,会出现一条消息,警告用户他/她忘记提交。但我面临的当前问题是,如果用户为A1和A2输入“Y”,然后他/她在提交之前关闭了电子表格,则会向用户显示警告消息(您要提交吗?)一旦用户响应“是”,则显示另一个验证消息,因为A1和A2具有相同的值“Y”。然后程序刚刚关闭而没有提交。
请指导我,
答案 0 :(得分:1)
将它放在Worksheet_Change事件中。它将在编辑单元格后更正值。
Const c1pos = 1
Const c2pos = 2
Application.EnableEvents = False
Select Case Target.Column
Case c1pos
If UCase(Target.Value) = "Y" Then
ActiveSheet.Cells(Target.Row, c1pos) = "Y"
ActiveSheet.Cells(Target.Row, c2pos) = "N"
Else
ActiveSheet.Cells(Target.Row, c1pos) = "N"
ActiveSheet.Cells(Target.Row, c2pos) = "Y"
End If
Case c2pos
If UCase(Target.Value) = "Y" Then
ActiveSheet.Cells(Target.Row, c1pos) = "N"
ActiveSheet.Cells(Target.Row, c2pos) = "Y"
Else
ActiveSheet.Cells(Target.Row, c1pos) = "Y"
ActiveSheet.Cells(Target.Row, c2pos) = "N"
End If
End Select
Application.EnableEvents = True