- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESSでのマクロ、ソート、縦方法の移動の仕方)
ACCESSでのマクロ、ソート、縦方法の移動の仕方
このQ&Aのポイント
- ACCESSでのマクロでのソートの仕方や縦方向に移動する方法がわからない質問について、解決方法をお教えください。
- テーブル名が「データテーブル」であり、フィールドには「氏名」「データ」「通番」が含まれています。フォーム名は「DataTable2」です。
- 実行ボタンを押すことで、テーブルをフィールド「氏名」+「データ」でソートし、フィールド「通番」に番号を入れる処理が行われます。実行前と実行後のテーブルの内容も示されています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 1.マクロでのソートの仕方がわかりません マクロではなく、VBAでよいのですよね。 下記のサンプルコードをご確認ください。 >2.縦方向に移動する方法がわかりません。 ? テーブル操作でしたら、ADO(またはDAO)を使用します。 例えば、MoveNextメソッドを使用します。 Public Sub 実行() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Dim Cnt As Long Cnt = 0 Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseClient Rs.Open "[データテーブル]", Cn, adOpenKeyset, adLockOptimistic Rs.Sort = "[氏名] ASC,[データ] ASC" '並べ替え Do Until Rs.EOF Cnt = Cnt + 1 Rs![連番] = Cnt Rs.Update Rs.MoveNext '次のレコードに移動 Loop Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing End Sub
お礼
ありがとうございます。うまく行きました。下記に結果を示します。 Public Sub 実行2_Click() Dim Cn As ADODB.Connection Dim Rs As ADODB.Recordset Dim Cnt As Long MyCount = 1 Set Cn = CurrentProject.Connection Set Rs = New ADODB.Recordset Rs.CursorLocation = adUseClient Rs.Open "[データテーブル]", Cn, adOpenKeyset, adLockOptimistic Rs.Sort = "[氏名] ASC,[データ] ASC" '並べ替え temp = "" Do Until Rs.EOF If temp <> Rs![氏名] Then MyCount = 1 Else MyCount = MyCount + 1 End If temp = Rs![氏名] Rs![通番] = MyCount Rs.Update Rs.MoveNext '次のレコードに移動 Loop Rs.Close: Set Rs = Nothing Cn.Close: Set Cn = Nothing MsgBox ("終了しました") End Sub