#282 範囲選択されたレコード内容を取得するには? フォーム、VBA

表形式またはデータシート形式のフォームにおいては、レコードセレクタ上のドラッグによって複数レコードの範囲選択が可能です。また、"SelTop"プロパティ"SelHeight"プロパティによって、範囲選択されているレコード番号を取得することができます(#244参照)。

さらに、それらのプロパティ値を取得して展開することによって、範囲選択された各レコードの内容を順番に取得することができます。

次の例では、レコードを範囲選択した状態でF4キーを押すことによって、それらのレコードの内容(受注コードと出荷先名)をイミディエイトウィンドウに表示します。

※コマンドボタンのクリックなどのタイミングでこのような処理を行なうことはできません。クリックと同時にレコードの複数選択が解除されてしまうためです。
※"KeyDown"イベントを発生させるためには、フォームの"キーボードイベント取得"プロパティを"はい"に設定しておく必要があります。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'キークリック時イベント

  Dim rst As Recordset
  Dim iintloop As Integer
  
  If KeyCode = vbKeyF4 Then
    'レコードセットの複製を生成
    Set rst = Me.RecordsetClone
    With rst
      'いったん先頭レコードへ移動
      .MoveFirst
      '選択範囲の先頭レコードへ移動
      .Move Me.SelTop - 1
      '選択されているレコード内容を取得するループ
      For iintloop = 1 To Me.SelHeight
        Debug.Print !受注コード, !出荷先名
        .MoveNext
      Next iintloop
      .Close
    End With
  End If

End Sub
レコードを複数選択したデータシートビュー
実行結果
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved