#419 | レコードセットからランダムな1レコードを取り出す方法 | VBA | |
RecordsetオブジェクトのAbsolutePositionプロパティを使うと、指定したレコード番号に移動することができます(ここでいうレコード番号とは、オートナンバーなどデータの値ではなく、データシート上の行番号にあたるものです)。 そして、RandomizeステートメントとRnd関数を組み合わせて、レコードセットの「1レコード〜総レコード数」の中からランダムな1つのレコード番号を取得し、そのレコード番号にAbsolutePositionプロパティで移動することによって、ランダムな1レコードを取り出すことができます。 次の例では、得意先テーブルからランダムな1レコードを取り出しています。 Dim dbs As Database Dim rst As Recordset Dim lngRecMax As Long Dim lngCurRec As Long Set dbs = CurrentDb 'AbsolutePositionプロパティを使う場合は、ダイナセットまたは 'スナップショットでレコードセットを開きます Set rst = dbs.OpenRecordset("得意先", dbOpenDynaset) With rst 'まず総レコード数を取得 .MoveLast: .MoveFirst lngRecMax = .RecordCount '乱数によって任意のレコード数の番号を取得 Randomize Timer lngCurRec = Int((lngRecMax * Rnd) + 1) 'そのレコード番号にカレントレコードを移動 .AbsolutePosition = lngCurRec - 1 'レコード内容を出力 Debug.Print lngCurRec, !得意先コード, !得意先名 .Close End With 何回か実行したあとのイミディエイトウィンドウ: |
|||
|
Copyright © T'sWare All rights reserved |