So-net無料ブログ作成

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

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

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

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 コメント