Undo(元に戻す Ctrl+Z)と Repeat(繰り返し Ctrl+Y)。Repeat は思い通りの処理になりませんでした。

執筆者:

カテゴリ:

,

目的

  • 直前の操作を元に戻す(Undo)。
  • 直前の操作を繰り返す(Repeat)。
  • マクロで実行した操作は対象外。

私が Repeat メソッドの正しい使用方法を分かっておらず、エラーが発生した状態で終わっていますが、良ければご覧ください。

その一例

  1. Excel 起動直後にテストしてみます。
Excel 起動直後。
Excel 起動直後。
  • Excel 起動直後は操作を行っていないので、元に戻す、繰り返しは押せないようになっています。
  • 元に戻せません。繰り返しできません。
    元に戻せません。繰り返しできません。
  • A1:A3 に A,B,C と入力してみます。マウス、キーボードで行いました。
  • A,B,C を入力しました。
    A,B,C を入力しました。
  • 「元に戻す」が押せるようになっています。この状態で Undo を使用したマクロを実行してみます。
  • セル A3 への 'C' の入力
    セル A3 への ‘C’ の入力
  • Undo を使用したマクロです。実行してみます。
    Sub Undo元に戻す()
    Application.Undo
    End Sub
    1. 実行結果は以下のようになりました。
  • C の入力が取り消されている。
    C の入力が取り消されている。
  • この時、「やり直し」が行える状態になっていました。上記までは「繰り返し」となっていた項目です。この状態で Repeat を使用したマクロを実行してみます。
  • やり直し
    やり直し
  • Repeat を使用したマクロを実行してみます。
    Sub Repeat繰り返す()
    Application.Repeat
    End Sub
    1. A3 に C が入力されると思っていましたがエラーが発生してしまいました。
  • 実行時エラー '1004' 'Repeat' メソッドは失敗しました。'_Application' オブジェクト
    実行時エラー ‘1004’ ‘Repeat’ メソッドは失敗しました。’_Application’ オブジェクト
    エラー発生行。
    エラー発生行。
  • 「Ctrl+Y」キーを押すと、 C の入力が元に戻りました。 C の入力が最後の操作なので更に「Ctrl+Y」は出来ないようです。
  • C が戻っている。
    C が戻っている。
    繰り返しできません
    繰り返しできません
  • 上記までは、セルに文字を入力してテストを行いましたが、次は、操作の種類を変えてテストしてみます。ワークシートに図形を描画して、その操作の Undo,Repeat を行ってみます。
  • 楕円を描画してみます。
    楕円を描画してみます。
    楕円を描画しました。
    楕円を描画しました。

    この時、元に戻す、繰り返しは以下のようになっていました。

    元に戻す、繰り返し。オートシェイプの挿入。
    元に戻す、繰り返し。オートシェイプの挿入。
  • Undo のマクロを実行してみます。
    Sub Undo元に戻す()
    Application.Undo
    End Sub
    1. 実行結果は以下のようになりました。
  • オートシェイプ描画前に戻りました。
    オートシェイプ描画前に戻りました。
  • Repeat のマクロを実行してみます。
    Sub Repeat繰り返す()
    Application.Repeat
    End Sub
    1. 実行結果は以下のようになりました。
  • オートシェイプが描画されました。 Repeat 出来たようです。
    オートシェイプが描画されました。 Repeat 出来たようです。
  • Repeat のマクロをもう一度実行してみました。
  • オートシェイプ挿入の操作が繰り返されている。
    オートシェイプ挿入の操作が繰り返されている。
  • 更に三、四回実行してみました。
  • オートシェイプを挿入した操作が繰り返されている。
    オートシェイプを挿入した操作が繰り返されている。

    文字の入力の Repeat は出来ていないままですが、ご覧いただきありがとうございました。

    テスト環境

    • Windows 10(64 ビット)
    • Microsoft Office Excel 2003

    以上、閲覧ありがとうございました。