• 締切済み

VBAでのテーブルのソートについて

初歩的な質問をさせていただきます。 VBAの処理で事前にテーブルにためたデータからテーブル内に同じデータがあるか調べたいのですが、テーブル内をソートさせてから上下のテーブル内のデータで1つ1つ判断して同じデータがあるか調べようとしています。 (1)VBAでテーブルにためこんだデータを  sortメソッドでソート可能でしょうか?  可能でしたら、サンプルになるコードを  教えていただけると有難いです。 (2)テーブル内に同じデータがあるか、  一発(?)で判断できる命令はあるのでしょうか? よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

この質問はアクセスVBAの質問でしょうね。 ただしエクセルのシートの「表」を「テーブル」と言い直す人も居る様な気がして。 ーーー >VBAでテーブルにためこんだデータを  sortメソッドでソート可能でしょうか? 「溜め込んだ」の意味がわかりませんが。 ーー (1) テーブルに地区というフィールド名のフィールドがあります。 Sub ADOsrt1() Dim cn As ADODB.Connection Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open "社員3", cn, adOpenKeyset, adLockOptimistic rs.Sort = "地区 ASC " '昇順で並び替えます。" Do Until rs.EOF kn = Nz(rs.Fields("地区")) MsgBox kn rs.MoveNext Loop rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub 実行するとソートされた順でレコードが順次受け取れます。 こんなことでよいのでしょうか。 ーー (2) >同じデータがあるか の探索するデータはどのようにして、決まるのですか。 定数として考えてよいなら(下記では「東北」) ーー あるいは全フィールド同じレコードがあるかどうかですか? 前者の場合 Sub ADOfnd1() Dim cn As ADODB.Connection Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open "社員3", cn, adOpenKeyset, adLockOptimistic Criteria = "地区 = '東北'" i = 0 Do Until rs.EOF rs.Find Criteria, i, adSearchForward If rs.EOF = False Then kn = Nz(rs.Fields("氏名")) MsgBox kn intcount = intcount + 1 End If If i = 0 Then i = i + 1 Loop If intcount = 0 Then MsgBox "該当するレコードはありません" Else MsgBox intcount & "件のレコードが見つかりました" End If rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub

すると、全ての回答が全文表示されます。

関連するQ&A