引用:
・メインフォームのいずれかのセクション上に、
1 つのオプショングループと、それと親コントロールとする
2 つのオプションボタンが配置されている。
(オプショングループの値(整数)に応じて分岐させている)
(メインフォームのフォームモジュール)
-----------------------------------------------------------------
Private Sub Form_Load()
Me![オプショングループ名].Value = 1
Me![オプショングループ名].SetFocus
Call SwitchSubForm
End Sub
Private Sub オプショングループ名_AfterUpdate()
Call SwitchSubForm
End Sub
Private Sub SwitchSubForm()
On Error GoTo Err_SwitchSubForm
With Me
Select Case ![オプショングループ名].Value
Case 1
![サブフォームコントロール1].Visible = True
![サブフォームコントロール2].Visible = False
Case 2
![サブフォームコントロール2].Visible = True
![サブフォームコントロール1].Visible = False
Case Else
'ここでは何もしない。
'何らかのエラーメッセージを表示したければ別途追記すること
End Select
End With
Exit_SwitchSubForm:
Exit Sub
Err_SwitchSubForm:
Dim strErrTitle As String
Dim strErrMsg As String
strErrTitle = "実行時エラー (" & Me.Name & ".SwitchSubForm)"
strErrMsg = Err.Number & ": " & Err.Description
Debug.Print strErrTitle
Debug.Print strErrMsg
MsgBox strErrMsg, vbCritical, strErrTitle
End Sub
-----------------------------------------------------------------
とりあえず、以上のようなコードがフォームモジュールに記述されていると
仮定しますが、
引用:
最初のサブフォームは表示され、切り替えると、何も表示されません。
引用:
Runtimeでうまくいきません。
ランタイム環境において動作していないのは、上記の( SwitchSubForm に相当する)
イベントプロシージャだけでしょうか。
それとも、特定のフォームやプロシージャに限らず、
全ての VBA のコードが実行されていない状況なのでしょうか。
もし後者である場合、そのランタイム環境において「トラストセンター
(旧称セキュリティセンター)」の設定に相当するレジストリ設定は
既に行われているのでしょうか。
いずれにしても、コードの実行中に何らかの実行時エラーが発生した場合に備えて
エラートラップを行ない、発生したエラーの内容を検証できるようにすることを
お奨めします。
ランタイム環境では VBE を使用できないため、もし何らかの実行時エラーが
発生していたとしても、VBE による警告メッセージも表示されませんので。