• 締切済み

InputBoxやMsgBoxが開いている状態で、エクセルシートの入力は可能?

いつもお世話になっております。 A.xlsのエクセルブックに他のブックを開くマクロを組んであります。 このマクロはここで終わらずに、マクロで開いたブックの情報で必要な部分をA.xlsに転記させるように記載してあります。(下記をご参照ください) ~前略 sht_name = InputBox("Book名を入力して下さい。", "Book名の指定") sht_name = sht_name + ".xls" Workbooks.Open Filename:="C:\ABC\" + sht_name ★ ref_num = InputBox("ref番号を入力して下さい。", "ref番号の入力") 後略~ 上記の★印のところで、必要に応じて開いたBookに修正を加えた後に、ref番号の入力をしたいのですが、こんなことってできるのですか? vbYesnoで[いいえ]を選んだ場合、処理を中止させる以外できないでしょうか? よろしくお願いいたします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 通常は、その場合、InputBox ではなくて、#1の方が書かれているように、UserForm のModal Mode を False にして使います。InputBox は、TextBox に置き換えます。 ただし、予想にないことがあったりして、慣れていないと意外に難しいかもしれません。 UserForm を使うなら、ブックに触らずに、最初から最後まで使ったほうが楽かもしれません。 なお、VB系では、見かけと誤動作を避けるために、 sht_name = sht_name + ".xls"    sht_name = sht_name & ".xls" と、「&」を使うのが一般的です。 それと、通常の設定では、変数にPublic ステートメントをつけても、別のブックで、その変数を使えるわけではありません。ブック間をつなげる方法(プロジェクト・グループ化)はあるのですが、Excelでは、あまり一般的には行いません。ブック間で親子関係ができてしまうので、閉じるほうがややこしくなってしまいます。

TENSAW
質問者

お礼

Wendy02さん、 たびたびお世話になります。 下記の通り"後略~"の後に長いマクロが続きます。 そのマクロの中に、また更に別BOOKとのやり取りがあり、大本のBOOKに戻るたびに、ThinWorkbook内のPrivate Sub Workbook_Activate()が走ってしまい、オーバーフローしてしまいます。 何かいい方法はないものかと考えましたが、とりあえず時間がないので、最初に指定するBOOKを開き内容のチェックをして、必要であれば修正をして閉じる。その後マクロを走らせております。 しかし、今後とても参考になるマクロです。ありがとうございました。 現在、休みで溜まってしまった仕事が山済みで、すぐに返答できずに大変失礼いたしました。 今後ともよろしくお願い申し上げます。

TENSAW
質問者

補足

お返事送れて申し訳ありませんでした。 インフルエンザで病床におりました。また追ってお礼欄にてお返事させていただきます。 大変失礼いたしました。

  • SePapa
  • ベストアンサー率50% (47/94)
回答No.2

こんにちは。 方法はいろいろあると思いますが、 ご参考として1例を回答します。 まずは処理状況判定するための変数を 標準モジュール等にPublicで宣言します。 Public CHG as integer そして実行マクロ内で以下のように変数を変えます。 CHG = 1 'ファイル開く前 sht_name = InputBox("Book名を入力して下さい。", "Book名の指定") sht_name = sht_name + ".xls" Workbooks.Open Filename:="C:\ABC\" + sht_name CHG = 2 'ファイル開いた後 そして、ThinWorkbook内にて以下を記述します。 Private Sub Workbook_Activate() If CHG = 2 Then ref_num = InputBox("ref番号を入力して下さい。", "ref番号の入力") End If End Sub こうすることで、別ブックを開いた後、 自ブックがアクティブになったときに 処理がはしるようになります。 もっというなれば、"reb番号入力"の処理実行の前には 開いたブックがすべて閉じている場合、 という判定処理もいれたらもっといいかと思います。 以上、ご要望の内容とはずれてるかもしれませんが ご参考まで。

TENSAW
質問者

お礼

SePapaさん、 お回答ありがとうございました。 実は"後略~"の後に長いマクロが続きます。 そのマクロの中に、また更に別BOOKとのやり取りがあり、大本のBOOKに戻るたびに、ThinWorkbook内のPrivate Sub Workbook_Activate()が走ってしまい、オーバーフローしてしまいます。 しかし、今後とても参考になるマクロです。ありがとうございました。 現在、休みで溜まってしまった仕事が山済みで、すぐに返答できずに大変失礼いたしました。 今後ともよろしくお願い申し上げます。

TENSAW
質問者

補足

お返事送れて申し訳ありませんでした。 インフルエンザで病床におりました。また追ってお礼欄にてお返事させていただきます。 大変失礼いたしました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

InputBoxやMsgBoxが開いている状態では、マウスでセルを選択することは 出来なかったと思います。 ★印のところで分けるか、ユーザーフォームでの処理に変更する位しか思いつきませんでした。

TENSAW
質問者

お礼

n-junさん お返事送れて申し訳ありませんでした。 インフルエンザで病床におりました。大変失礼いたしました。 ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう