PR

チェックボックスで一括操作をするには?【Accessフォーム活用術】

Access
スポンサーリンク

こんにちは、Accessブロガーのなかぜんです。

「複数のデータを一気に更新したい!」「削除ボタンを1回で済ませたい!」そんなふうに感じたこと、ありませんか?

業務でAccessを使っていると、「一括でチェックしたデータだけ操作したい」と思う場面は意外と多いです。でも、手動で一件ずつ操作するのは手間がかかりますよね。

今回はそんなお悩みを解決する「チェックボックスで一括操作する方法」を、初心者の方にもわかりやすくご紹介します!

スポンサーリンク

チェックボックス一括操作とは?

まずは仕組みを簡単にイメージしてみましょう。

  • 一覧フォームの各行にチェックボックスを設置
  • チェックが入っているデータだけをVBAで抽出
  • 選ばれたレコードだけ一括で更新または削除

これにより、操作ミスの防止や業務効率のアップが期待できます。

フォームの準備

① テーブルにフラグ用のフィールドを追加

まず、操作対象を判別するためのチェックボックス用フィールドをテーブルに追加しましょう。

フィールド名:処理対象  
データ型  :Yes/No型

② 連続フォームにチェックボックスを配置

フォームを「連続フォーム」に設定し、「処理対象」フィールドをチェックボックスとして表示します。

▼こんな感じになります:

[☑] 顧客A  
[☐] 顧客B  
[☑] 顧客C  
 ↓  
[更新]ボタンで一括処理

実際のVBAコード例と解説

③ 選択されたレコードに対して処理を実行するVBA

ここでは「選ばれた顧客のステータスを”完了”に更新する例」を紹介します。

Private Sub btn一括更新_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb

    Set rs = db.OpenRecordset("SELECT * FROM 顧客マスタ WHERE 処理対象 = True", dbOpenDynaset)

    Do While Not rs.EOF
        rs.Edit
        rs!ステータス = "完了"
        rs!処理対象 = False 'チェックを外しておく
        rs.Update
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing

    Me.Requery 'フォームを再表示
    MsgBox "一括更新が完了しました!", vbInformation
End Sub

解説:

  • 処理対象 = Trueでチェックが入ったデータだけを抽出
  • rs.Edit~rs.Updateでフィールドを更新
  • 処理後にRequeryでフォームを更新

よくあるミス・注意点

  • チェックボックスのフィールド名が違うとエラーになる
  • テーブルが開かれてロックされていると更新できない
  • クエリを使っている場合、更新できないこともある

事前にバックアップを取るようにしましょう。

中級者向け:トランザクションで安全に

複数データをまとめて操作する場合、途中でエラーが出ると一部だけ変更されるリスクがあります。

そこで、以下のようにトランザクション処理を使えば、「すべて成功したら反映、失敗したら元に戻す」が可能です。

db.BeginTrans

On Error GoTo エラー処理

'処理(前述と同様)
...

db.CommitTrans
Exit Sub

エラー処理:
    db.Rollback
    MsgBox "エラーが発生しました。処理は取り消されました", vbExclamation

業務用として使う場合は、ぜひ検討してみてくださいね。

まとめ:できるようになると超便利!

今回は、Accessフォームでチェックボックスを使って一括処理する方法をご紹介しました。

  • Yes/No型フィールドでチェック対象を判定
  • 連続フォームで視覚的に操作
  • VBAで対象データのみ更新・削除が可能

業務の効率化にすぐ活用できるテクニックです!

それでは、また次回の記事でお会いしましょう!