|
こんばんは。
>申し訳ありません。
>当方winXP、Excel2003の環境です。
この現象、Win2000 & Excel2002 SP-3でも確認しました
(Win98&Excel2000でも確認しました)。
再現手順
・まず、新規ブックにふたつのユーザーフォームを作成してください。
ユーザーフォームのコントロール配置は以下のとおりです。
UserForm1
コマンドボタン(Commandbutton1)を配置
UserForm2
RefEdit コントロール(RefEdit1)
コマンドボタン(CommandButton1)
のふたつのコントロールを配置
次にコードです。
標準モジュールに
'================================================================
Sub main()
UserForm1.Show
End Sub
UserForm1のモジュールに
'================================================================
Private Sub CommandButton1_Click()
UserForm2.Show
Unload Me
End Sub
UserForm2のモジュールに
'================================================================
Private Sub CommandButton1_Click()
Unload Me
End Sub
上記のコードを所定のモジュールにコピーします。
1. mainを実行してください。
2. UserForm1が表示されます。
UserForm1にあるコマンドボタンをクリックしてください。
3. UserForm2が表示されます。
4. RefEditコントロールを選択し
(表示直後はRefEditにフォーカスがあります)、
ここにセルアドレスが表示されるようにシート上のセル範囲を選択してください。
(例セルA1〜A40を選択する)
5. セルアドレスがRefEditコントロールに表示されたら、コマンドボタンを
クリックしてください。
UserForm2が消去され、次いでUserForm1が消去されます。
6. セルが選択された状態に戻ります。ここでIMEのモード切替を行ってみてください。
切り替えが出来なくなっています。
RefEditコントロールはバグが多いですからねえ!!
www.h3.dion.ne.jp/~sakatsu/Excel_Tips08.htm
回避方法1
UserForm1の上にUserForm2を重ね表示は行わない。
UserForm1のモジュールを
'===============================================================
Private Sub CommandButton1_Click()
Me.Hide
UserForm2.Show
Unload Me
End Sub
とすると、UserForm2を表示する直前にUserForm1が非表示になりますが、
これで上記の再現操作を行ってもIMEのモードの切り替えは可能です。
(Excelから立ち上げなおして試してみてください)
回避方法2
RefEditコントロールを使用せず、InputBoxメソッドを使う。
UserForm1のモジュールを
'==================================================================
Private Sub CommandButton1_Click()
On Error Resume Next
Dim rng As Range
Set rng = Application.InputBox("範囲を指定して下さい", , , , , , , 8)
Unload Me
End Sub
として、上記の再現手順で操作してみてください。
この場合もIMEのモードの切り替えは可能です。
検討してみてください。
|
|