Accessのフォームで単語帳を作っていて、
答えが見えないようにしたいときってありますよね。
そして、自分が回答したら、すぐに答えを見たい。
そういうときにどうするか?
二つの解決法を思いつきました。
- 問題フォームと答えフォームを別々に作る。使うときには、交互に見て、レコードを一つずつ送っていく。
2.フォームの答えを非表示にしておいて、コマンドボタンなどを押すと、表示されるようにしておく。
今回、2.の方法をとろうとしてハマったポイントをシェアしたいと思います。
まず、Accessの世界では、マクロとVBAマクロは違うもののようです……。
これが元でさまざまな勘違い、躓きが起きていました。
下記サイトで、やっとそれに気がつきました。
次に、いくらやっても、ボタンからVBAが実行できなかった理由がわかりました。
それは、
「デザインビューで」「フォームのプロパティーの」「コード保持」を「はい」にする。
これをやっていなかったので、エラーが出ていました。まず、デザインビューレイアウトビューが自分の頭のなかでごっちゃになっていて、フォームプロパティーは、レイアウトビューから見つかりそうで見つからず、イライラしていました。また、コード保持などという、プロパティーがあること、しかも微妙に違う名前でエラーメッセージに出ていたりして、かなり混乱しました。
さらに、
レイアウトビューで、ボタンの「イベント」「クリック時」を「イベントプロ-ジャ」にする。
(最初にここにVBAの関数名とか書くのかなと、思ったら全然違ってました。一律、イベントプロシージャ」にするみたいです)
それでやっと、できました。
上のtoggleEnglish()は、私が勘違いして書いた関数。
下のように、Form用のモジュール(?)を作って、その中に、イベント・ハンドラの形式で書くということなのですね。
単語帳が完成したら、またこちらでご報告したいと思います。
久しぶりの投稿でした。
実は、1の方法が簡単かつエレガントな方法です。Accessを使い慣れている方ならすぐに思いついたかもしれません。実は私はこれ(Qiita)を書いているときに思いつきました。