2010-09-21 157 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