トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 揺るぎない力編: 第20話「ユーザーフレンドリーとは」3/4 :どうやってんだ、これ!?

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第20話 「ユーザーフレンドリーとは」

どうやってんだ、これ!?

Private Sub ListBox1_Click()
    DoEvents
    ActiveCell.Value = ListBox1.Value
    Unload Me
End Sub

※赤字の部分が、修正のため追加したコードです。

「…よし!これでイケるだろ。
星、フォームを表示して、リストボックスを選択してみろよ」
星くんは言われた通り、ユーザーフォームを表示して、リストボックスからアイテムを選択します。
ユーザーフォームが消える一瞬前に、選択したアイテムが青く変わり、
確かに選択したことが実感できました。

「えええええ…!
…すっげえええ!!どうやってんだ、これ!!??」
星くんは、何度もユーザーフォームを表示し、アイテムを選択する操作を繰り返します。
何度試しても、ユーザーフォームが消える一瞬前に、選択したアイテムが青く変わることが確認できました。

「担当者が望んでいるのは、おそらく、これじゃないのかい?」 「こ、これだよ。これ!
俺も、こうなるといいなって思ってたんだ。
いったいどうやったんだい、これ?」
「そんなに難しいことはやってないよ。
ユーザーフォームが閉じる前に、DoEvents関数でVBAが占有していた制御をOSに渡したんだ。
もう少し簡単に言うと、画面を書き換える余裕を、Windowsに与えてやったのさ」
「じゃあ、今までは画面を書き換えるヒマなく、フォームが閉じちゃってたということかい?」 「うん。でも画面を書き換えるといっても、閉じるのはアッという間だから、
もう少し表示を長くしたいときは、次のコードを追加するといいよ」

一覧にもどる