プロが教える店舗&オフィスのセキュリティ対策術

アクセス2000を使っております。初心者です。
フォームにコマンドボタンを作って、特定のIDのレコードに移動したいです。

IDが「A0001」と言うように、頭がA~Lから始まるものがある。
「A」~「L」というボタン・・・合計12コ置きたい。
「C」ボタンを押せば「C0001」へ、「K」ボタンを押せば「K0001」へ、へ移動する。

簡単なようで、なかなかできませんでした。
よろしくお願いいたします。

A 回答 (4件)

#2です。



> Dim rs As DAO.Recordset

この行で、DAOと言うものを使っているのですが、
それの参照設定がしてないのだと思います。

VBAの画面で、[ツール]→[参照設定]
「参照可能なライブラリ ファイル」の中から、
「Microsoft DAO 3.6 Object Library」をチェックして下さい。
バージョン(数字の部分)は多少異なるかもしれません。

恐らくこれで、解決すると思います。

念のため確認しますが、下記の2つはチェックが入っていると
思いますが、もしなければ、チェックして下さい。

「Visual Basic For Applications」
「Microsoft Access 9.0 Object Library」

これで解決しない場合は、エラーが出る行を補足して下さい。
黄色のマーカー以外に、エラー部分が反転表示されていると思います。

又は、VBAの画面で、[デバッグ]→[***のコンパイル]を実行して下さい。
エラーが出ている場所が分かるはずです。

--------------------------------------------------------
DAOとはData Access Objectの略で、
AccessのVBAでは頻繁に使用するものです。
この参照設定は常にチェックしている状態でOKです。
DAOの詳細は下記のサイトなど参考にして下さい。

http://www.accessclub.jp/dao/index.html
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございます。
「Microsoft DAO 3.6 Object Library」にチェックを入れたら完璧にできました!!(ちょっと感動してしまいました。)他のボタンの設定もできてやっと実用化できそうです。
本当にわかりやすい説明をしていただいて感謝しております。ありがとうございました。

お礼日時:2007/11/08 16:40

直接の回答ではありませんが、


沢山のボタンを作るより、コンボボックスでA~Lを選択するようにして、
「GO」というコマンドボタン一つのほうがスッキリするのでは?
「2挙動になってイヤだ」というなら、コンボボックスの「更新後」イベントプロシージャにコードを書けばよいと思われます。
    • good
    • 0
この回答へのお礼

お礼が遅くなり大変申し訳ございません。
実は今使っている他のソフトがA~Lの12個のボタンが並列していて、操作的に使い慣れているという理由からボタン方式を選びました。(今回のアクセスとは内容に相互性はないのですが。)
コンボボックスも今後の参考にさせていただきます。ありがとうございました。

お礼日時:2007/11/07 18:44

フォームのデザイン画面で、[表示]→[コード]で


VBAの画面を開き、下記を記述
-------------------------------
Private Sub 移動(str As String)
 Dim rs As DAO.Recordset
 If str <> "" Then
  Set rs = Me.RecordsetClone
  rs.FindFirst "ID like '" & str & "'"
  Me.Bookmark = rs.Bookmark
  Set rs = Nothing
 End If
End Sub
-------------------------------

Aへ移動するボタンのクリック時のイベントプロシージャ
-------------------------------
Private Sub コマンドA_Click()
 移動 "A*"
End Sub
-------------------------------

他のボタンも同様です。
アルファベットの部分を変更してください。

内容は、RecordsetCloneを使ったレコードの移動です。
ヘルプの「RecordsetClone プロパティ」に解説がありますので、
興味があれば読んでみてください。
    • good
    • 0
この回答へのお礼

お礼が遅くなって大変申し訳ありません。
一番簡潔な方法とお見受けしました。しかし何度やってもエラーになってしまいます。
「コンパイルエラー ユーザ定義型は定義されていません。」と出てしまい、それをOK押すと、1行目が黄色のマーカーで選択されたようになってしまいます。
できれば回答者様のやり方でできたらうれしいのですが、原因がおわかりでしたら教えてください。よろしくお願いいたします。

お礼日時:2007/11/07 18:32

移動マクロ命令は レコード件数を数値指定するという


やりかたですからね

少し意味合いは違う方法ですが
1.A0000以上を抽出するクエリー
  B0000以上を抽出するクエリー
  C0000以上を抽出するクエリー
  というようなクエリーを8個作る
2.コマンドボタン用のマクロとして
  フォームを開く命令のところで
  フイルターの行へそれぞれのクエリー名を入れる
  というマクロを8個作る
  (ひよっとしたらマクロ先頭行にて「フォームを閉じる」を
   入れることが必要かも)
3.フォームのコマンドボタンの「クリック」の行へ
  それぞれのマクロ名を指定
4.指定のレコードが先頭に表示される
-------------------------------------------------
つどコマンドボタンを押さなおなければ
逆方向(上方向)へのレコードは見れませんが。。。。。
    • good
    • 0
この回答へのお礼

お礼が遅くなって大変申し訳ありませんでした。
イメージでは回答者様の方法が浮かんでいたのですが、初心者で操作がわかりませんでした。教えていただいて助かりました。
おかげさまで設定がバッチリできました。ありがとうございます。

お礼日時:2007/11/07 17:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!