
お世話になります。いつも助けられてます。エクセルVBAの質問です。個別のコーディングは
できるのですが,表題の件について,アドバイスいただければと思います。
やりたいことは,
1.ThsisWorkBookから他ブックを開く
↓
2.開いたブックをみながら特定の行を選ぶ(← →キーか,マウスを使う)
↓
3.選んだ行をThsisWorkBooに転記する
のようなことです。今までは,2の部分がは,あらかじめ読む行をテキストボックス等から
取得していましたが,視覚的に分かりやすくしたいので,2の部分をいれたいと考えていま
す。
キー入力の方法とうは,分かるのですが,流れとしてどんな手順を踏めばいいのか,また,
どのようなイベントを使用すればいいのか,アドバイスいただければありがたいです。
No.1ベストアンサー
- 回答日時:
こんばんは
>(← →キーか,マウスを使う)
を完全にVBAで対応しようとすると、キー入力やマウス入力を取得して、内容を解析し、それに応じた表示を行うことが必要になります。
基本操作のUIとしてエクセルが有する機能ではありますが、VBAで全部を実装しようとするとそれなりに面倒かも知れません。
マウスやキーの操作を可能にするには、入力待ちループの中で、DoEvents等を実行することで可能にすることはできます。
また、「読む行」(?)を選択なり指定するなりしたら、それが終了したことを示す何らかの入力が必要になると思われます。
(Enterキー入力とか、なんらかのマウス操作などでしょうか。)
キー入力等をVBAで感知するには、WindowsのAPIを利用すれば可能になります。
https://liclog.net/getasynckeystate-function-vba …
https://vbabeginner.net/getasynckeystate/
これで必要な入力を判定し、それに応じた処理を行うという流れになるでしょう。
多少面倒とは思いますが、ルールをうまく決めておけば、実現することは可能と思います。
上記が面倒なら、もっと簡単そうな代案をいくつか・・
(いずれも、キー操作やマウス操作に関しては、エクセルの機能を利用する方法です)
◇開いたブックの固定セルをクリアし、
そこに指定するセル範囲なり行番号等を記入するルールにしておく。
VBAでは、当該セルを監視して、セルの値が空でなくなったら、その値を利用して処理すれば実現できると思います。
◇選択終了用のボタンを設置したUserFormを作成しておき、
ブックを開いたら Modeless でそのフォームを表示しておきます。
(Modeless表示であれば、キー入力やマウス操作が有効になります)
範囲指定が終わったら、ユーザはボタンを押し、VBAで残りの処理を行います。
(ボタンクリックの処理に記述しておく)
思い付きレベルで申し訳ありませんが、こんなところでしょうか。
早速のご回答ありがとうございます。ご教示いただいたHPを参考に,APIを使った方法でいろいろやってみたいと思います。
ThsisWorkBookから開くBookは,メールで,記入を依頼する
ものなので,マクロを置くのは,避けたいと思ってます。
No.3
- 回答日時:
No1です。
>ThsisWorkBookから開くBookは,メールで,記入を依頼する
>ものなので,マクロを置くのは,避けたいと思ってます。
No1の回答は、ThisWorkbook(=転記先ブック)にのみマクロが記述されていることを想定しています。
代案での方法も同様で、マクロは自ブックのみで、転記元のブック(=開かれる他のブック)は .xlsx等 マクロのないブックで可能なはずです。
(個人的には、最後の案が一番よさそうに思いますが・・)
たびたびありがとうございます。
今回は,ご教示いただいた,
https://vbabeginner.net/getasynckeystate/
の例示のものを改変して,何とか思った動作ができるようになりました。
ありがとうございました。
No.2
- 回答日時:
かっこ悪いですが。
キー入力プロセスが入るなら、 キー入力後にどのセルを選んだか決定する処理が入るですよね。
ThisWorkbookをまっさらなエクセルでなく、あらかじめ作ったボタン付きマクロシートを呼び出すことにし、セルを選んでボタンを押すと次のマクロが走る(前のマクロはThisWorkbookを開いて終わる)
など、2段構えのマクロにすれば、出来るのかなと。
最初のマクロ付きエクセルに、ボタン付きシートもテンプレートで用意し、マクロ途中で外にコピーし、それを使うとかで、ファイル自体は1つで済ませれるかもです。
早速のご回答ありがとうございます。また,アイディアもあり
がとうございます。
This Workbookには,大本になるマスターのデータや,処理
本体のVBAを記述しています。
ThsisWorkBookから開くBookは,メールで記入を依頼する
もので,マクロ等を設置するのは,さけたいと思ってます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
別ブックをダイアログボックス...
-
2つ目のコンボボックスが動作...
-
エクセルVBAが途中で止まります
-
VBAで別のブックにシートをコピ...
-
Excel にて、 リストボックスの...
-
【Excel VBA】書き込み先ブック...
-
VBA シートをコピーする際に Co...
-
VBA コードを実行すると画面が...
-
ワイルドカード「*」を使うとう...
-
Excelマクロ 該当する値の行番...
-
オブジェクトは、このプロパテ...
-
【ExcelVBA】インデックスが有...
-
【VBA】全シートの計算式を全て...
-
複数シート名とブック名が一致...
-
ユーザーフォームの切り替えに...
-
現在開いているbook全てを対象...
-
VBAで別ブックのシートを指定し...
-
Excel2007VBAファイルの表示に...
-
VBA ブックを開かずにブック内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のエクセルファイルとシー...
-
VBA シートをコピーする際に Co...
-
別ブックをダイアログボックス...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
VBAで別ブックのシートを指定し...
-
【ExcelVBA】zip圧縮されたCSV...
-
【Excel VBA】書き込み先ブック...
-
2つ目のコンボボックスが動作...
-
[Excel]ADODBでNull変換されて...
-
Excelマクロ 該当する値の行番...
-
VBA 実行時エラー 2147024893
-
Excelのマクロコードについて教...
-
Excel にて、 リストボックスの...
-
【ExcelVBA】インデックスが有...
-
VBA アプリケーション定義また...
-
【Excel VBA】表の列の値毎に分...
おすすめ情報