SSブログ

アクセス小僧:フォーム再開時に非連結コンボボックスの選択肢を元に戻す [コンピューター]

アクセスのフォームに設置した非連結のコンボボックスで選択されている

選択肢をフォームを再開したときに、元に戻す方法を紹介します。
コンボボックスの規定値を空白にした場合、

Combobox1.jpg

既定値 


コンボボックスは空白(何も選択されていない状態)になります。

Combobox2.jpg

既定値をitemdata(0)、itemdata(1)、--- で指定した場合、コンボボックスの選択肢の1番目、2番目、--- が固定的に選択されます。

既定値[コンボボックス名].[itemdata](0)


フォームを再開したときに、直前に選択していた選択肢を選択するために、コンボボックスの何番目の選択肢が選択されていたか、番号(0, 1, 2, ---)を別テーブルに退避しておき、上記の既定値のitemdata()に戻すことを考えます。

コンボボックスのフォーカス喪失後イベントに、選択されている選択肢の番号(0, 1, 2, ---)を別テーブルに退避するマクロを記述します。

Private Sub コンボボックス名_LostFocus()
  '【イベント】コンボボックスがフォーカスを失った時
  '【変数】
  Dim db As DAO.Database
  Dim rs As DAO.Recordset
  '【実行コード】
  ' 退避先テーブルを開く
  Set db = CurrentDb()
  Set rs = db.OpenRecordset("退避先テーブル名", dbOpenDynaset)
  rs.MoveFirst
  rs.FindFirst "主キー名=1"
  If rs.EOF Then
    MsgBox "主キー名=1が見つかりません。"
  Else
    rs.Edit
    rs![コンボボックス名] = [コンボボックス名].ListIndex
    rs.Update
  End If
  rs.Close
  Set rs = Nothing ' 解放
  db.Close
  Set db = Nothing ' 解放
End Sub

退避先テーブルを開いて、主キー=1のレコードのコンボボックス名のフィールドに、ListIndexを使って、選択されている選択肢の番号(0, 1, 2, ---)を退避します。

フィールド名
主キー名1
コンボボックス名選択されている選択肢の番号(0, 1, 2, ---)


コンボボックスの規定値に、DLookUpを使って、退避先テーブルから、選択されていた選択肢の番号(0, 1, 2, ---)を参照して、コンボボックスで選択されている選択肢を戻します。

既定値[コンボボックス名].[itemdata](DLookUp("コンボボックス名","退避先テーブル名","主キー名=1"))


以上。
ヤバイぜ!(12)  コメント(1) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 12

コメント 1

cheese999

ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-12-12 14:02) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。