2012-01-21 8 views
2

私はリストボックスからアイテムを選択して別のフォームで表示するVBA(Excel 2010)システムを持っています。ここでは何が起こるのか非常に単純化されたバージョンです。VBAリストボックスは最初の使用後に応答しなくなる

' Part of frmForm1 code module 
sub lstListbox_Click 

dim MyEvent as string 
dim i as integer 

i=me.lstListbox.listindex 
MyEvent=me.lstlistbox.list(i) 

' Now show the item in the second form 

Load frmForm2 
me.hide 
ThisWorkbook.LoadDataIntoForm2 (frmForm2, MyEvent) 
frmForm2.show 

unload frmForm2 
me.show 

end sub 

リストボックスはクリックを受け付け、最初にイベント(イベントハンドラは上記のものです)を受け入れます。イベントハンドラの主要な部分である:

  • は(詳細データを表示する)は、第2のフォームをロード
  • 手順(LoadDataIntoForm2)
  • にユーザーフォームパラメータとして第二の形態を渡し(ホストフォームを隠しますfrmForm1)と二番目の形式は終了クリックを処理するときに第二の形式(frmForm2)
  • を示し、コードは次のようになります。

frmForm2コードモジュールの「パート

sub cmdExit_Click 

me.hide 

end sub 

それラウンド最初の時間は、正常に動作します - しかし、私は(lstListBox_Click手順の末尾に)frmForm1に戻ったときに、フォームの残りの部分が動作しているにもかかわらず、リストボックスは頑固に応答しないまま。

私はこのことを少しデモシステムに抽象化することができました。それが助けになるのであれば、同じ動作がそこに見られます。 (これは通常の.xlsファイルですが、アップロードとしては容認できないようです)

誰もこれまで見たことがありますか?そして、私はそれが私がそれをしたい方法で動作するようになるかもしれないどのようなアイデアを誰も持っていますか?

おかげで、

トニー

+0

+1まあ、私は前にそれを見ていませんでしたが、あなたは '_Change'イベントにフック場合、それは同じことをするのか疑問 –

+0

を形成? –

答えて

2

.Show方法のデフォルトでは、フォームmodalを作ることです。明示的モードレスに設定します。

Sub lstListbox_Click 
... 
Me.Show vbModeless 

End Sub