2010-09-21 139 views
0

我在电子表格中有两列名为A1和A2。输入的数据只能是“Y”或“N”。但是,A1和A2不能具有相同记录的相同条目。例如,如果A1中的值在记录#3中为“Y”,则记录#3中的A2值必须为“N”。并且不能是“Y”。另外,如果记录#3中的A1是“N”,则A2必须是“Y”。换句话说,A1和A2在同一条记录中不能有相同的条目。 它有道理吗? 什么是最好的办法呢?使用VBA?或使用图纸控件?验证规则Excel VBA

到目前为止,我在Submit_click子写了一个简单的条件为: 如果范围(A1).value的=范围(A2).value的那么 MSGBOX( “.....”)

但这与我在Worksheet_beforeClose中保存的函数冲突。当用户没有提交关闭工作表时,会出现一条消息并提醒用户他/她忘记了提交。但是我目前面临的问题是,如果用户为A1和A2输入“Y”,然后他/她在提交之前关闭崇拜单,则会向用户显示警告消息(是否要提交?)只要用户回答“是”,就会显示另一个验证消息,因为A1和A2具有相同的值“Y”。然后程序关闭而未提交。

请指导我,

回答

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