Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : その他)
サブフォームを2枚重ねて、ラジオボタンにvisibleで切替ますがRuntimeでうまくいきません。
投稿日時: 25/05/08 17:16:42
投稿者: suekunx

お世話になっております。
Access2021で
サブフォームを2枚重ねて、ラジオボタンにvisibleで切替ますがRuntimeでうまくいきません。
Runtimeは2013です。
最初のサブフォームは表示され、切り替えると、何も表示されません。
Access2021では正常に動作します。
対応策がありますでしょうか。
よろしくお願い申し上げます。

回答
投稿日時: 25/05/08 18:19:30
投稿者: sk

引用:
サブフォームを2枚重ねて、ラジオボタンにvisibleで切替ます

Access でいうところのオプションボタンを指しているとして、
以下のどちらの構成に該当しているのでしょうか。
 
・メインフォームのいずれかのセクション上に、
 1 つのオプショングループと、それと親コントロールとする
 2 つのオプションボタンが配置されている。
 (オプショングループの値(整数)に応じて分岐させている)
 
・メインフォームのいずれかのセクション上に、
 (オプショングループとリンクしていない)
 1 つのオプションボタンが配置されている。
 (オプションボタンの値( True / False )に応じて分岐させている)
 
・上記以外の構成
 
引用:
最初のサブフォームは表示され、切り替えると、何も表示されません。

また、メインフォームのフォームモジュールに記述している
イベントプロシージャによってそれを実現しているのであれば、
イベントプロシージャの内容を具体的に明記されることをお奨めします。
 
引用:
Runtimeは2013です。

引用:
Access2021では正常に動作します。

現時点では、Access バージョンの問題、ランタイム環境の問題、
実際に記述されたコードの問題、あるいはそれ以外の要因による問題の
どれに該当するかを評価することは出来ません。
 
なさろうとしていることだけを見た限り、例えばメインフォーム上に
2 つのページを持つタブコントロールを挿入し、それぞれのページに
サブフォームコントロールを配置する形にすれば事足りるのではないかと
思われますが。

投稿日時: 25/05/09 07:34:49
投稿者: suekunx

[quote="sk"]

引用:
サブフォームを2枚重ねて、ラジオボタンにvisibleで切替ます

Access でいうところのオプションボタンを指しているとして、
以下のどちらの構成に該当しているのでしょうか。
 
引用:
・メインフォームのいずれかのセクション上に、
 1 つのオプショングループと、それと親コントロールとする
 2 つのオプションボタンが配置されている。
 (オプショングループの値(整数)に応じて分岐させている)

 
こちらが該当します。

回答
投稿日時: 25/05/09 13:53:28
投稿者: sk

引用:
・メインフォームのいずれかのセクション上に、
 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 による警告メッセージも表示されませんので。

投稿日時: 25/05/09 14:56:06
投稿者: suekunx

sk 様
 
お世話になっております。
原因が判明しました。
表示されない方のサブフォームに紐づくデータのリンクが切れていました。
大変お騒がせいたしました。
申し訳ございません。
タブコントロールで正常に表示されるようになりました。
ありがとうございました。