どうやってんだ、これ!?
Private Sub ListBox1_Click()
DoEvents
ActiveCell.Value = ListBox1.Value
Unload Me
End Sub
※赤字の部分が、修正のため追加したコードです。
「…よし!これでイケるだろ。
星、フォームを表示して、リストボックスを選択してみろよ」
星くんは言われた通り、ユーザーフォームを表示して、リストボックスからアイテムを選択します。
ユーザーフォームが消える一瞬前に、選択したアイテムが青く変わり、
確かに選択したことが実感できました。
「えええええ…!
…すっげえええ!!どうやってんだ、これ!!??」
星くんは、何度もユーザーフォームを表示し、アイテムを選択する操作を繰り返します。
何度試しても、ユーザーフォームが消える一瞬前に、選択したアイテムが青く変わることが確認できました。
「担当者が望んでいるのは、おそらく、これじゃないのかい?」
「こ、これだよ。これ!
俺も、こうなるといいなって思ってたんだ。
いったいどうやったんだい、これ?」
「そんなに難しいことはやってないよ。
ユーザーフォームが閉じる前に、DoEvents関数でVBAが占有していた制御をOSに渡したんだ。
もう少し簡単に言うと、画面を書き換える余裕を、Windowsに与えてやったのさ」
「じゃあ、今までは画面を書き換えるヒマなく、フォームが閉じちゃってたということかい?」
「うん。でも画面を書き換えるといっても、閉じるのはアッという間だから、
もう少し表示を長くしたいときは、次のコードを追加するといいよ」