こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

2つのマクロの組合せがうまくいきません

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

以上、ご教授、宜しくお願い致します。

投稿日時 - 2008-09-18 10:06:13

QNo.4337632

困ってます

質問者が選んだベストアンサー

Excel2002ではないので、参考程度に。
以下のように変えれば、D列、E列の変更確認除外が出来ると思います。

If Target.Columns = ("4:5") Then Exit Sub
     ↓
If Target.Column = 4 Or Target.Column = 5 Then Exit Sub

投稿日時 - 2008-09-18 11:27:01

お礼

うまくいきました!
何故そうなるのかは分かりませんが…
大変助かりました。
有難うございました。

投稿日時 - 2008-09-18 12:50:33

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問