Life is an adventure

まだ間に合うと信じて頑張るブログ

VBAを使ってACCESSでTODOアプリを作ってみよう!【ACCESS VBA超入門】

職場に ACCESSがインストールされてるけどあんまり使ったことがない、 ACCESSでプログラミングしてみたいけど最初の一歩の踏み出し方が分からない、そんな人に向けたACCESS VBAの入門記事です。
ぜひこれを機にACCESSでプログラミングしてみましょう。

この記事で得られること

  • VBAでなんでも作れる気になる
  • テーブルの概念を理解できる
  • 成果物としてアプリケーションが手に入る

論より証拠、実際にやってみましょう。レッツトライです。

STEP1 TODOリスト用のテーブルを作成する

まずは自分のTODOを記録するためのテーブルを作成しましょう。

作成タブからテーブルデザインをクリックします

テーブルデザイン画面が開かれますので、ここにTODOとして残すべきデータ項目を記載していきます。
今回は以下の項目を記載します。

  • ID・・・オートナンバー型(主キー)、登録したTODOを一意に判別するために使用します
  • TODO・・・短いテキスト型、登録したTODOの内容を記録します
  • 登録日・・・日付型、TODOを登録した日付を記録します
  • 完了日・・・日付型、TODOが完了した日付を記録します

主キーを設定する為には、主キーを設定する項目のところで右クリックして「主キー」をクリックします。 今回で言うとIDの列です。

全て記載が終わった状態のテーブルです
全て記載が終わったらCTRL+Sを押して「T_TODO」という名前で保存しましょう。
頭のTはテーブルのTです。

STEP2 ACCESSでフォームを新規作成する

次はフォームを作成します。
作成タブからフォームデザインを選択しましょう。

赤枠の所をクリックすればOK
そうすると方眼紙みたいな画面がでてきます。
この画面はデザインビューという名前で、これからもどんどん使うことになります。
作成したらCTRL+Sで保存して「F_TODO」という名前にしましょう。
頭のFはフォームのFです。
保存したら、詳細の箇所を右クリックして「フォームヘッダー」をクリックしましょう。
このような感じです。フォームヘッダーとページフッターがややこしいので間違わないようにしましょう。
クリックするとフォームヘッダーとフォームフッターが追加されました。
このような感じです
STEP2の最後に、このフォーム「F_TODO」と先ほど作ったテーブル「T_TODO」を連携させます。
下の画像の右上のところに赤丸を着けてますが、ここをクリックして黒の四角が表示されるのを確認してください。 そうしたら右側のプロパティウインドウのすべてのタブのレコードソース欄から先ほど作成した「T_TODO」を選択してください。
左上を赤枠で囲っている所をクリックして、黒い四角がつくのがポイント!
また既定のビューが単票フォームになっていると思われますので、ここは帳票フォームに変更しましょう。
先ほどのレコードソースを選択したところの下にある既定のビューを選びます
これでSTEP2は完了です。
ちなみにコードを書くのは最後のSTEP5だけです。

STEP3 新規作成したフォームにコントロールを配置する

フォームデザインのタブの中にコントロールがありますので、ここから選択しましょう。
今回使うのはラベルとテキストボックスとボタンの三種類だけです。
おそらくここら辺は感覚的にわかると思うので説明を省きますが、このようなイメージで配置します。

STEP4   配置したコントロールに名前をつけたり、テーブルと関連付ける

ここから少し地道な作業になります。
STEP3で配置したコントロールのテキストボックスとボタンについては以下画像のように名前を付けます。

また、txt_IDとtxt_TODOについてはプロパティからコントロールソースを選択してテーブルと連携させます。

設定したいコントロールを選択してからプロパティのその他のコントロールソースを選択
画像はtxt_IDのみですがtxt_TODOについてもTODOと結びつけるようにしましょう。

STEP5 配置したコントロールのクリックイベントを作成する

完了ボタンを選択してプロパティのイベントタブのクリックからイベントプロシージャを選択して、その隣の「・・・」をクリックしましょう。

「・・・」をクリックするとこのような画面が開かれると思います。

私の場合は黒背景に青文字ですが、初期設定の場合は白背景に黒文字で表示されると思います。

今回は完了ボタンを押したら、T_TODOにボタンを押した日付が登録され、その列が使用不可能になる形式をとろうと思いましたが、面倒になったので、完了ボタンを押したらそのレコードが削除されるようにしようと思います。 下記画像のように用意された枠の中に下記を記載ししてください。 Dim strSQL As String strSQL = "DELETE FROM T_TODO WHERE ID = " & txt_ID DoCmd.RunSQL (strSQL) Me.Requery

ここまでできたら、ACCESSの画面に戻って、フォームビューからいじってみましょう。 最初は空白のテキストボックスが二つでてくると思いますが、TODOのところだけ適当に埋めると新たなレコードが作成されました。
その状態で完了ボタンをクリックしてみてください。
そうすると下記のメッセージボックスが表示されますので、OKを押すとそのレコードが消えて表示されます。

VBAのコードについては一切説明を書きませんでしたが、たった4行のコードでデータを削除することに成功しました。
本当はもう少しリッチな機能にするつもりでしたが、疲れてきてしまったので今回はここまでとさせてください。

最後に、まずはVBAでプログラミングになれて、それから他の言語に手を出していくのがいいと思います!

以上お疲れさまでした。