|
お世話になっております。
先日の件に関して、メッセージボックスからユーザーフォームに変えた所、
下記問題に突き当たり困っております。ご助力いただけたらと思いますm(_ _)m
やりたい事としましては、
1.マクロで他Excelを開きます。
↓
2.1で開いたExcelファイルの中からユーザーが任意のシートを選びます。
↓
3.2で選んだシート内の任意のセルを選びます。
↓
4.2で選んだシートをマクロを実行中のExcelにコピーします。
↓
5.コピーしたシートを任意のシート名に変更します。
↓
6.ユーザーフォーム内の指定されたテキストボックスに開いたExcel名・選んだシート名・選択したセルの列と行を表示します。
という作業をしようと思っています。
今悩んでいる問題点と致しまして、開いたエクセルから6の情報を表示するというマクロを作成することです。
1でシートを開いた後、モードレスで新しいユーザーフォームを表示し3でユーザーフォーム内の必要情報を取得、新ユーザーフォームのコマンドボタンを押すことでコピーを実施し6へ、という風にした場合は
・
・
・
新しいユーザーフォーム.show
Msgbox "シートをコピーしました。"
・
・
テキストボックスへ値の入力
・
・
End sub
とすると、新しいユーザーフォームが開いたと同時にその後の処理であるMsgboxやテキストボックスへの値の入力までが同時に行われてしまいます。
モードレスを解除するとコマンドボタンを押すまで処理は実行されないのですが、そうすると2.3の処理が行えなくなってしまいます。。。
別の方法として、ユーザーフォームを使わないでInputBoxを使用してやろうとました。
そうしたら、セルの行や列の情報を得ることは出来てもシートのコピーやシート名などシートに関する処理で思ったとおりの結果を出すことが出来ませんでした。。。
シート名やセルの行や列の情報は別の処理で値を使用するので、変数として保存しなければなりません。
以上の経緯から
ユーザーフォームをモードレスで使用してもその後の処理を待機させる方法、あるいはInputBoxを使用してシート名やシートのコピーを実現する方法を模索中ですが良い案が浮かびません。。。
今、その作成したVBAのあるExcelファイルが手元になく、コードをかけなくて申し訳ないのですが ご助力いただけませんでしょうか。
|
|