ドラッグとドロップを禁止するために以下のマクロを入れています。
Sub Auto_Open()
'無効
Application.CellDragAndDrop = False
End Sub
Sub Auto_Close()
'有効
Application.CellDragAndDrop = True
End Sub
上記のマクロだと、ファイルを開いた時は CellDragAndDrop は無効なのですが
終了するときに、[終了]-[キャンセル]して再度作業を進めようとすると CellDragAndDrop が有効になってしまいます。
Sub Auto_Close() で、[終了]-[キャンセル]の場合のみ、
Application.CellDragAndDrop = False とするには、どのうように記述すれば良いのでしょうか?
よろしくお願いします。
なぜ質問のようになるかというと、
書き込み確認メッセージが出る前にAuto_Closeが処理されるからです。
で、代わりに、Workbook_BeforeCloseイベントで、
独自の書込み確認メッセージを表示してコントロールしてみたらどうでしょう。
確認メッセージにはデフォルトのメッセージと同様、
「はい」「いいえ」「キャンセル」の3つのボタンを表示させます。
また、Auto_OpenもWorkbook_Openに変えて統一しておくといいでしょう。
Atuo_OpenとAuto_Closeは削除して
以下のコードを、ThisWorkBookモジュールにコピペ。
'-------------------------------------------
Private Sub Workbook_Open()
Application.CellDragAndDrop = False
End Sub
'-------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim msg
msg = MsgBox(ThisWorkbook.Name & " を保存しますか?", vbYesNoCancel, "確認")
Select Case msg
Case vbYes
Application.CellDragAndDrop = True
ThisWorkbook.Save
Case vbNo
Application.CellDragAndDrop = True
ThisWorkbook.Saved = True
Case Else
Cancel = True
End Select
End Sub
'-------------------------------------------------
Auto_CLoseではなぜ上記のことができないかはお分かりですね?
以上です。
お礼
ありがとうございます! [終了]-[キャンセル]でもドラッグ・ドロップが無効のまま作業することができました。 ただ、「確認」のメッセージボックス[はい][いいえ]を選択すると、 「Microsoft Office Excel」の[はい][いいえ][キャンセル]メッセージが再度表示されてしまいます。 この表示が出ないようにすることはできるのでしょうか? 度々申し訳ありませが、ご教示いただけますでしょうか。 よろしくお願いします。