Excel VBA質問箱 IV

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

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


30747 / 76732 ←次へ | 前へ→

【51249】Application.Sendkeysで送ったコマンドが実行されるのを待つ方法
質問  やまP E-MAIL  - 07/9/5(水) 21:15 -

引用なし
パスワード
   やりたいと思っている処理は以下の通りです。
1.現在セル(C2:E4)を選択しているとする。(選択の中心はC2)
2.ショートカットキー(Alt+4)を押すと、2〜4行全体が削除される。
3.その後、選択セルがC2に戻る。
4.Undo(Ctrl+Zなど)を行えばきちんと前の状態に戻るようにする。

この処理のために以下の準備を行いました。
**********************************************************************
VBAコード:

Sub 選択している行全体を削除()
' Keyboard Shortcut: Alt+E+4

  Dim nowColumn As Variant '今選択の中心にあるセルの列
  Dim seru As Range '選択しているセルの範囲
  Dim min_flag As Boolean '選択セルの最小行を判定するフラグ
  Dim rowMin As Variant '選択セルの最小行
  Dim rowMax As Variant '選択セルの最大行
  Dim columnMin As Variant '選択セルの最小列
  Dim columnMax As Variant '選択セルの最大列
  
  nowColumn = Selection.Column '選択の中心にあるセルの列を代入
  min_flag = True
  
  '選択している範囲の中で最小行・列、最大行・列を求める
  For Each seru In Selection
    If (min_flag = True) Then
      rowMin = seru.Row
      columnMin = seru.Column
      min_flag = False
    End If
    rowMax = seru.Row
    columnMax = seru.Column
  Next

  '選択範囲の行全体を選択する
  Rows(rowMin & ":" & rowMax).Select
  
  'Alt+E+Dのコマンドを送る(これで行の削除を実行)
  Application.SendKeys ("%ED")
 
  '最初に選択していたセルを選択する
  Range(Cells(rowMin, columnMin), Cells(rowMax, columnMax)).Select
End Sub

メニューのユーザ設定:
・メニューの「編集」に、「選択している行全体を削除(4)」のメニューをカスタマイズ(マクロ)で追加。
・そこに、上記のマクロを設定

**********************************************************************
以上のことにより、やりたいと思っていることが実行されると思ったのですが、なぜか「行全体の削除」ではなく、「選択されているセルの削除」が実行されてしまいます。
ちなみに、最後の、
  >'最初に選択していたセルを選択する
  >Range(Cells(rowMin, columnMin), Cells(rowMax, columnMax)).Select
を除けばうまく実行されます。

恐らく、Application.Sendkeysで、コマンドが実行されるより先に最後の
  >'最初に選択していたセルを選択する
  >Range(Cells(rowMin, columnMin), Cells(rowMax, columnMax)).Select
が実行されてしまっているのかと思われます。

Sleepでコマンドの実行を待つ、なども考えましたがうまくいきません。

※直接マクロで処理を行わず、Application.Sendkeysでコマンドを送っているのは、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 お礼

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