ExcelのVBAで、実行したマクロは、エクセルの戻る操作が出来ないように思います!!少なくとも私のスキルでは・・!!
で、考えたのですが、エクセルの機能の内、キー入力だけで実行できる操作であれば、キーバッファ(はるか昔にはこのように呼んでいたとおもいます。具体的には、キーボードで入力した情報を一時的に溜める部分)に模擬的にキー情報を転送すれば、エクセルの戻る機能が使えると思いました。で、どうすれば、いいのでしょうか?思いついたもののどのようにすればいいのか?解りません!
VBAもしくは、VBに詳しい方教えて頂けないでしょうか?宜しくお願い致します。できれば、マクロで、戻る操作が有効になる方法を教えて頂くと嬉しいです。よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
あまり、難しいことを考えない方がいいのではないですか?
恐らく SendKeys とかkeybd_event API、または SendInput、
SendMessage、PostMessage あたりの API のことでしょう。
API はとりあえず横に置いておくとして、SendKeys について
書きます。Excel アプリケーションにとって、
・直接キーで入力された
・SendKeys で送信されたキー
の両者に違いはありません。したがって、SendKeys でキー
(ショートカットキー)を送信し、コマンドを実行する形
ならば、理屈上は Undo できるでしょう。。。
' // 下記コードも高い確率で Undo できます。
Sub sample()
Range("A1").Copy
Range("C5").Select
SendKeys "^v"
End Sub
でも、せいぜい1回~2回のコマンド実行分までです。実用途に
は耐えないでしょうね。SendKeys は「失敗するもの」ですしね。
ご自身でいろいろと試してみると良いと思います。
なお、マクロの Undo を実現したいなら、マクロによる操作を全て
記録することです。例えば、
記録:A1セルの背景色 = 変更前 インデックス3
実行:A1セルの背景色 = インデックス5に変更
記録:B1セルの値 = 変更前 100
実行:B1セルの値 = 150 に更新
・・・・・・・・
などのように、操作前の状態を何らかの手法を用いて(ワークシート
などへ)記録していけば、Undo はその逆方向を実行すれば良いこと
になります。
しかしながら、今まで完全な Undo を実装したマクロを見たことは
残念ながらありませんが。。
御回答ありがとうございます。
マクロで操作を全て記録することは、思いついていました。しかし、折角エクセル本体にその機能があり、また、戻る確率も高い環境があるので、間接的にでも使えないものかと思い質問してみました。
とりあえずSendKeysで試行錯誤しながら確認してみます。ありがとうございました。
No.2
- 回答日時:
こんにちは。
「元に戻る」ということは、必要な状態を保存していることに他ならないと思います。
だから、Excel VBAに限りることですが、それは、キーバッファやキーロガーというようなものではなく、VBAの実行前と実行後の元に戻すための、最小限のデータをどこかに確保すればよいのです。
例えば、数値を書き換えるなら、その数値を事前に、ファイル、または、テンポラリシート、または、グローバル変数等に保存してしまい、そして、マクロを実行します。
必要に応じて、元に戻す、というマクロを別に実行して、その保存したデータを取り戻せばよいわけです。そして、ブックを終了する前などに不要になったデータは、破棄するようにすればよいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- マウス・キーボード 不良表示キー(キーボード) 3 2022/04/27 10:53
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Word(ワード) Word 2016のマクロを Word 2021のWordでキー動作させたい 3 2023/04/12 16:14
- Excel(エクセル) エクセルVBAで図形のテキストを取得してセルに入力 2 2022/10/05 23:09
- マウス・キーボード キーボードのCaps Lockキーと変換キーの挙動がおかしくなりました。 4 2022/09/04 22:44
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
マクロ 実行ボタンを押さずに...
-
複数ファイルにある特定のシー...
-
Excelのワークシート上に検索窓...
-
Excelの改ページ 同シート内で...
-
Wordの画面を左右にスクロール...
-
Wordで「原稿用紙○枚」を換算す...
-
Excel VBA のdebug(F8キー) が...
-
エラーになってないのにVBA...
-
《エクセル2000》非表示になっ...
-
AccessのテーブルデータをExcel...
-
powerpointにwebページを挿入
-
エクセルのマクロ機能で前のシ...
-
マクロを実行するとエクセルが...
-
マクロ ブックをマクロなしでコ...
-
エクセルのマクロについて印刷...
-
ExcelVBAで、タイマー割り込み...
-
Accessのクエリを実行するショ...
-
マクロ実行後元に戻すことは
-
エクセルで複数のシートをまと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
複数ファイルにある特定のシー...
-
マクロ 実行ボタンを押さずに...
-
EXCELのセルへ、デジタル時計を...
-
Excelを開いた時に表示さ...
-
エラーになってないのにVBA...
-
Excel VBA のdebug(F8キー) が...
-
ワードからエクセルへ貼り付け...
-
エクセルのマクロ機能で前のシ...
-
Excelのワークシート上に検索窓...
-
モジュール内のマクロを全て実...
-
エクセル グラフの軸の最小値最...
-
EXCEL 複数のシートの同一の位...
-
エクセルで複数のシートをまと...
-
【Excel VBA】エラー番号400
-
Excelマクロでオプションボタン...
-
Wordの画面を左右にスクロール...
-
マクロ ブックをマクロなしでコ...
-
Wordで「原稿用紙○枚」を換算す...
-
AccessのテーブルデータをExcel...
おすすめ情報