Excel2002を使用しています。
・シートに変更があった場合、可否を問うメッセージを出す。
・但し、「A1」及び「D、E列」の変更は除外する。
・「D、E列」をダブルクリックしたら、アクティブセルに「済」の文字が入る。
という事をしたくて、Sheet1に以下のようなコードを書きましたが、うまくいきません。
「A1」の変更は除外されるのですが、DE列への変更はメッセージが出てしまいます。
又、そのメッセージが出た際「いいえ」を選択するとエラーになります(Application.Undo)。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim 変更回答 As Integer
If Target.Address = "$A$1" Then Exit Sub
If Target.Columns = ("4:5") Then Exit Sub
変更回答 = MsgBox("セル:" & Target.Address(False, False) & "が変更されました。" & vbCrLf & _
" 「はい」 … 変更許可" & vbCrLf & " 「いいえ」… 内容破棄", vbYesNo)
Application.EnableEvents = False
If 変更回答 = vbYes Then
Application.EnableEvents = True
Exit Sub
Else
Application.Undo
End If
Application.EnableEvents = True
End Sub
******
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 4 Then
ActiveCell = "済"
Cancel = True
End If
If Target.Column = 5 Then
ActiveCell = "済"
Cancel = True
End If
End Sub
以上、ご教授、宜しくお願い致します。
Excel2002ではないので、参考程度に。
以下のように変えれば、D列、E列の変更確認除外が出来ると思います。
If Target.Columns = ("4:5") Then Exit Sub
↓
If Target.Column = 4 Or Target.Column = 5 Then Exit Sub
お礼
うまくいきました! 何故そうなるのかは分かりませんが… 大変助かりました。 有難うございました。