Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11060 / 13644 ツリー ←次へ | 前へ→

【18385】元に戻す KAME 04/9/22(水) 14:57 質問[未読]
【18388】Re:元に戻す IROC 04/9/22(水) 15:04 回答[未読]
【18389】Re:元に戻す つん 04/9/22(水) 15:07 発言[未読]
【18392】Re:元に戻す KAME 04/9/22(水) 15:49 お礼[未読]
【18396】Re:元に戻す IROC 04/9/22(水) 16:30 回答[未読]
【18402】Re:元に戻す ni 04/9/22(水) 17:27 発言[未読]

【18385】元に戻す
質問  KAME  - 04/9/22(水) 14:57 -

引用なし
パスワード
   お世話になっています。

ツールの「元に戻す(Ctrl + Z)」と同じ機能のマクロを作りたいのですが、
うまいこといきません。

シート上には赤のセルと白のセルがランダムで配置され、
シートに保護をかけているのですが、
白のセルは文字を打ち込めるようになっています。

以下のようなコードを書いたのですが、エラーが表示されてしまいます。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If MsgBox("元に戻す", vbYesNo) = vbYes Then
  Worksheets("Top_View").Unprotect password:="abcd"
  Application.Undo
  Worksheets("Top_View").Protect password:="abcd"
End If

End Sub

宜しくお願いいたします。

【18388】Re:元に戻す
回答  IROC  - 04/9/22(水) 15:04 -

引用なし
パスワード
   マクロのよる処理は戻せませんよ。

【18389】Re:元に戻す
発言  つん E-MAIL  - 04/9/22(水) 15:07 -

引用なし
パスワード
   こんにちは。

IROCさんのおっしゃるように、マクロで実行した処理を、
「Undo メソッド」では戻せませんが、
そうじゃないとして、試してみましたが、
こちらでは特にエラーは出ませんでした。

どの時点でエラーが出るのでしょう?

【18392】Re:元に戻す
お礼  KAME  - 04/9/22(水) 15:49 -

引用なし
パスワード
   そうですか。。。
戻せませんか。。。
分かりました。
ありがとうございます。

▼つん さん:
>どの時点でエラーが出るのでしょう?

エラーは
Application.Undo
の位置で

実行時エラー1004
Undoメゾットは失敗しました、applicationオブジェクト

というエラーが表示されます。

【18396】Re:元に戻す
回答  IROC  - 04/9/22(水) 16:30 -

引用なし
パスワード
   マクロの処理を戻したいときは、
現在のシートを新規ブックにコピーしておくなどして、
バックアップの要領で対応するしかないと思います。

【18402】Re:元に戻す
発言  ni  - 04/9/22(水) 17:27 -

引用なし
パスワード
   おじゃまします。

Application.Undo は、マクロを実行する直前のユーザーの変更を取り消すものなので、
そういう目的なら、

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 If MsgBox("元に戻す", vbYesNo) = vbYes Then
   Application.Undo
 End If
End Sub

で実行できると思いますよ。
当方、Excel2000で、実行できました。
ユーザーが変更できているところを元に戻すのだから、プロテクトも
掛かってないはずでは?

右クリックする直前の動作がマクロによる編集であると、ダメです。

11060 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free