|
おはようございます。
>今回のActivateでフォーカスが入るページと
>入らないページがあります。
私が確認した環境では、UserformのActivateイベントで処理すことで
正常に作動したのですが・・・。
環境 Excel2002 Win2000
新規ブックにて
ユーザーフォーム(Userform1)
テキストボックス(Textbox1)
マルチページ(Multipage1)
4枚のページを作成する
(既定値で2ページ用意されていますから、あと2ページ追加してください)
各ページ(Page1からPage4)には、それぞれ一つのテキストボックスを
用意します。
Textbox2、Textbox3、Textbox4、Textbox5
仮にSheet1のセルA1に指定されたページを開いて上記のユーザーフォームを
表示させる(モーダレス表示)という仕様だとすると・・・。
上記コントロールを配置したUserform1のモジュールには、
'=================================================================
Private Sub UserForm_Activate()
TextBox1.SetFocus
End Sub
'=================================================================
Private Sub UserForm_Initialize()
Dim num As Long
With MultiPage1
.Value = 0
num = Val(Worksheets("sheet1").Cells(1, "a").Value)
If num > 0 And num < .Pages.Count Then
.Value = num - 1
End If
End With
End Sub
標準モジュールに
'==================================================================
Sub main()
UserForm1.Show vbModeless
End Sub
Sheet1のセルA1に1〜4の値を設定して
上記のmainを実行してみてください。
セルA1で設定したページがアクティブな状態でユーザーフォームが表示され、
テキストボックス(Textbox1)をフォーカスする事が出来るはずですが。
上記Userform1とうまくいかないユーザーフォームとは根本的に構成が違うなら
そのユーザーフォームの構成(コントロール配置の詳細)や
コードなどの投稿を期待してたんですが・・・。
(他にもExcelやWinのバージョンも必要ですねえ)
ユーザーフォームには、私からするとビックリするほどのバグの
存在このサイトの過去ログにも投稿されていますし、
私の実体験でもユーザーフォームを含んだちょっと規模の大きい
プログラムなどを作成すると、一つぐらいは見つかります。
Multipage1.Value=xx
でフォーカスまで移ってしまうのだって私に言わせればバグですけどねえ
他にも、
フレームとその中に配置されたテキストボックス(文字入力系コントロール)
Multipageとそのページ内に配置されたテキストボックス(文字入力系コントロール)
は、不具合があることがこの質問箱で発表されています(By 角田さん)。
www.h3.dion.ne.jp/~sakatsu/Excel_Tips03.htm
さらにモーダルモードでは、正常に作動しても
同じ事をモーダレスモードで表示すると
正常に作動しないこともいくつか確認されています。
事前にそれがわかっていれば、憂いも少ないので
詳細な再現手順書が必要だったんですが、残念です。
|
|