- ベストアンサー
アクセス2007VBA 重なったサブフォームのプライオリティ変更
アクセス2007VBA 重なったサブフォームのプライオリティ変更 フォームの中にサブフォームを少しずらして3つ重ねて置いてあります。 アクテブになったサブフォームを一番上にするにはどうしたらよろしいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
失礼しました。説明に抜けありました。 フォームの表示に関しては以下にありますが、 http://support.microsoft.com/kb/210500/JA/ 重ねたサブフォーム(ここではサブフォーム 表示コントロール + サブフォーム)の入れ替 えは、タブコントロールの ように出来るのかは定かではありません。 また、関数の引数に関しては環境に左右される 可能性もあるのでためしていません。 それで、ソースオブジェクトの入れ替えで どうですか、と提案したまでです。 あるいは、 Private Sub Form_Open(Cancel As Integer) Me.Fsubctl1.Visible = True Me.Fsubctl2.Visible = False Me.Fsubctl3.Visible = False End Sub Private Sub opFFF_AfterUpdate() Select Case Me.opFFF.Value Case 1 Me.Fsubctl1.Visible = True Me.Fsubctl2.Visible = False Me.Fsubctl3.Visible = False Case 2 Me.Fsubctl1.Visible = False Me.Fsubctl2.Visible = True Me.Fsubctl3.Visible = False Case 3 Me.Fsubctl1.Visible = False Me.Fsubctl2.Visible = False Me.Fsubctl3.Visible = True End Select End Sub のように、表示、非表示で対応するという 方法もあります。 参考程度ですが。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
一般的には、 Screen.ActiveForm.Name で取得できます。 アクティブなフォームが無い場合は エラーがでますので、 On Error GoTo ErHa Screen.ActiveForm.Name ErHa: MsgBox("アクティブなフォームはありません。") などのようにエラー処理をしておきます。 あるいは、 サブフォームの表示を変更するのであれば、 メインフォームのサブフォーム表示コントロールの ソースオブジェクトを変更する方法はいかがですか。 たとえば、フォームにオプショングループを 設置しその名前をopFormとします。 オプショングループにオプションボタンを三つ 置きます。オプショングループの初期値を1に 設定しておきます。 オプショングループの更新後処理で、 Private Sub opForm_AfterUpdate() Select Case Me.opForm.Value Case 1 Me.Fsub.SourceObject = "Fsub1" Case 2 Me.Fsub.SourceObject = "Fsub2" Case 3 Me.Fsub.SourceObject = "Fsub3" End Select End Sub Fsubはメインフォームのサブフォーム表示コントロール の名前で、初期は埋め込み0とか埋め込み1とかに なっています。 何らかの理由でサブフォームを重ねておかなければ ならないのならばこれは使えませんが。
- Hardking
- ベストアンサー率45% (73/160)
該当サブフォームプロパティー:TopMost=true または Win32 API の SetWindowsPos を使用する。
補足
サブフォームのプロパティーにTopMostはありませんでした。 ひとつのフォーム(ウインドウ)の中に置いた複数サブフォームの上下関係なのですが・・・
お礼
>何らかの理由でサブフォームを重ねておかなければ はい、わけ有りで重ねてあります。 下に隠れたサブフォームの部分表示が必要で、 Visible = True、 Falseの切換えも採用しずらい状況です。 他の方法を模索してみます。 ソース付きのご回答、誠にありがとうございました。