Excel VBA質問箱 IV

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

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


30705 / 76732 ←次へ | 前へ→

【51291】Re:Application.Sendkeysで送ったコマンドが実行されるのを待つ方法
お礼  やまP  - 07/9/10(月) 15:44 -

引用なし
パスワード
   ▼ichinose さん:
>こんばんは。
>>やりたいと思っている処理は以下の通りです。
>>1.現在セル(C2:E4)を選択しているとする。(選択の中心はC2)
>>2.ショートカットキー(Alt+4)を押すと、2〜4行全体が削除される。
>>3.その後、選択セルがC2に戻る。
>>4.Undo(Ctrl+Zなど)を行えばきちんと前の状態に戻るようにする。
>>
>>※直接マクロで処理を行わず、Application.Sendkeysでコマンドを送っているのは、Undoを可能にするためです。
>
>ふ〜ん、これ本当ですか??
>
>Excel2002で例えば、
>
>Sub test1()
>  With Rows(1)
>    .Select
>    .Value = 1
>    End With
>  Application.SendKeys "%ed"
>  DoEvents
>  'MsgBox "確認"
>  Application.SendKeys "^z"
>  DoEvents
>  Range("a1:c1").Select
>End Sub
>
>とすれば、1行目がSendkeysによって削除されますが、Undoは効きませんでした。
>(エラーにはなりませんが)
>これがバージョンによっては成功するのですか?
>
>Excel2002でUndoを成功させるには・・・、
>
>'===============================================
>Sub test()
>  With Rows(1)
>    .Select
>    .Value = 1
>    End With
>  With Range("a1:c1")
>    .Value = 2
>    .Select
>    End With
>  MsgBox "確認1"
>  Application.ExecuteExcel4Macro "EDIT.DELETE(3)"
>  MsgBox "確認2"
>  Application.Undo
>  Range("a1:c1").Select
>End Sub
>
>
>上記コードのようにExcel4Macroでの行削除はUndoが有効でした。
>
>バージョンが違うのなら、確認してみて下さい


>ichinoseさん
ありがとうございます。
確かに1つ目の方法だとUndoが有効にならず、2つ目ではうまくいきました。
僕のエクセルも2002なので、動作が同じでした。

恐らく、セルに影響を与えるようなマクロの処理を挟んだ時点でそれまでの処理記録のようなものがなくなってしまうのではないかと思いました。

test1は、
Sub test1()
  Rows(1).Select
  Application.SendKeys "1^{Enter}"
  Application.SendKeys "%ed"
'  DoEvents
'  MsgBox "確認"
'  Application.SendKeys "^z"
'  DoEvents
'  Range("a1:c1").Select
End Sub
とするとUndoが有効になりました。
SendKeysでコマンドを送っているだけならUndoが有効なのでしょうか。

あとichinoseさんのtest()を参考にすると、もしかしたら、Application.*に関してはUndoが有効になるのかとも思いました。
ちょっと確認してみたいと思います。

どうもありがとうございました。

0 hits

【51249】Application.Sendkeysで送ったコマンドが実行されるのを待つ方法 やまP 07/9/5(水) 21:15 質問
【51253】Re:Application.Sendkeysで送ったコマンド... neptune 07/9/5(水) 22:23 発言
【51289】Re:Application.Sendkeysで送ったコマンド... やまP 07/9/10(月) 15:10 お礼
【51254】Re:Application.Sendkeysで送ったコマンド... ichinose 07/9/5(水) 23:21 発言
【51256】Re:Application.Sendkeysで送ったコマンド... neptune 07/9/6(木) 9:56 発言
【51291】Re:Application.Sendkeysで送ったコマンド... やまP 07/9/10(月) 15:44 お礼
【51257】マクロじゃないけど。 Jaka 07/9/6(木) 11:23 発言
【51258】Re:マクロじゃないけど。 Jaka 07/9/6(木) 11:51 発言
【51293】Re:マクロじゃないけど。 やまP 07/9/10(月) 15:55 お礼
【51294】解決致しました! やまP 07/9/10(月) 16:09 お礼

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