- 締切済み
Excel VBA実行中にワークシートを操作したい
ユーザーフォームなどを表示中に ワークシートをクリックすると、ビープ音がなって 操作できないのですが、 操作する方法は ありませんか
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
#1です。 >一度ワークシートをアクティブにしてから ユーザーフォームを表示させれば良いということですね そうはなくて vbModeLessに注目しなきゃいけないのでは。
- nda23
- ベストアンサー率54% (777/1415)
VBAはマルチスレッドはできないし、 スレッドセーフでもありません。 よって、お考えのような処理はVBA だけでは実現できません。 C言語でフォームを作り、これを別の スレッドで動くようなDLLを作れば 何とかなりますが、Cで画面操作する 大変さ、マルチスレッドの制御方法、 VBA⇔DLLのインターフェースなどを 考えると、相当な技術が必要です。
- imogasi
- ベストアンサー率27% (4737/17069)
そのVBAコードは誰が組んだのか?質問者か?それなら(質問者が初心者なら)不完全とか誤りも考えられるだろう。 それならそのコードを書いた場所とコードと、どうしたいのかを質問に書いて、質問しないと何のことか判らないと思う。 普通ビープ音など鳴ら無いと思う。選択できないとかはありえる。 質問は訳が判らないが、下記をやって、なにか(私の勘違いならそれも含めて、そうじゃないんだ質問はこれこれだと補足してみて)掴んでくれたら。 ーー UserForm1にテキストボックス1つと、コマンドボタン1つ貼り付ける。 UserForm1のコマンドボタンのクリックイベントに Private Sub CommandButton1_Click() ActiveCell = TextBox1.Text End Sub を入れる。 ーー 標準モジュールに Sub test02() Worksheets("Sheet1").Activate UserForm1.Show (vbModelessl) End Sub を入れて、このtest01を実行する。 Sheet1が表示(選択)され、そこにユザーフォームも表示されるだろう。 ソノシートのどこかのセルをアクチブにして、テキストボックスの文字列を入れて、ボタンをクリックすると そのアクチブセルにテキストボックスで入力した文字列が代入される。 別のセルをクリックして、同じことをすれば選択したセルに文字列が入るだろう。
お礼
ありがとうございます。 一度ワークシートをアクティブにしてから ユーザーフォームを表示させれば良いということですね 勉強になりました。