簡単なサンプルを作成して動作確認してみました。
テーブル
Mtbl_名簿 (ID, F1, F2, F3, F4)
クエリ Qry_名簿
SELECT ID, F1 FROM Mtbl_名簿;
メインフォーム
テキストボックス テキスト1
コンボボックス cbFilelds
値集合タイプ 値リスト
値集合ソース F2;F3;F4
規定値 "F2"
サブフォームコントロール SF1
ソースオブジェクト 空欄
メインフォームのフォームモジュール
Option Compare Database
Option Explicit
Private Sub Form_Load()
SetSFList
End Sub
Private Sub cbFilelds_AfterUpdate()
SetSFList
End Sub
Public Sub SetSFList()
Dim strFilelds As String
strFilelds = "ID, F1, " & Me.cbFilelds
CurrentDb.QueryDefs("Qry_名簿").SQL = "select " & strFilelds & " from Mtbl_名簿"
Me.SF1.SourceObject = "クエリ.Qry_名簿"
Me.SF1.Form.OnCurrent = "=CurentEvent()"
End Sub
標準モジュール
Function CurentEvent()
With CodeContextObject
Debug.Print "レコード移動しました!IDは" & !ID
.Parent!テキスト1.Value = !ID
End With
End Function
仕様
サブフォームのリストには ID, F1 フィールドは常に表示
コンボボックスで選択されたフィールドが表示
上記でメインフォームを開くと、ID, F1, F2列が表示されている
レコード移動するとイベントが発生してテキスト1にカレントのIDが表示される
コンボボックスでフィールド名を変更するとサブフォームの表示も変更される
レコード移動イベントも発生する。
というように動作確認できました。
通報 ...