- ベストアンサー
モジュールの値を一気に書き換える方法
- Access2003を使用しています。初心者です。現在モジュールにプロシージャを書いて、クエリ内の数式で使用しています。年度ごとに全ての値を入力し直しています。年度を入力するとモジュールをその年のデータに全て書き換えるVBAを作りたいと考えています。
- 年度を主キーにしたテーブルを作成し、他の項目のフィールドを設定し、そのデータを利用する方法も考えられます。モジュールの値を書き換えるVBAのコーディング方法について教えていただけると幸いです。
- モジュールの値を一気に書き換える方法についての質問です。現在は年度ごとに全ての値を入力し直していますが、年度を入力すると自動的にモジュールの値が書き換わるVBAを作成したいと考えています。主キーを使用したテーブルの作成や他の項目のフィールドを利用する方法も検討しています。お知恵を拝借したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>このようなものが20個程あり、年度が変わるごとに全ての値を入力し直しています。 >(年度・西暦・配付率などその年の数値) これのデータを何に使用するのですか?レポートなど? >そこで”年度”を主キーにしたテーブルを作成し、そこに他の項目(西暦・配付率など)の >フィールド(20個)を設定し、そのデータを利用できないかと考えています。 これだと、データとして何にも使えますが、用途は?
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
> そもそもモジュールの値を書き換えたりできますか? 多分めちゃくちゃ難しい。VBAでVBAを変えるという事になるからね。つまり、Accessオブジェクトではなく、mdbをバイナリ解析してプロシージャ部分を切り出し、値を書き換えてバイナリファイルに戻して際コンパイルをかけるというような事をせねばならん。 それよりかはそのNendo()を一箇所だけにして、全モジュールがそいつを参照するようにする方が良いだろう。標準モジュールにつくればそのMDB内でシステムグローバルに呼び出す事ができる。 あなたが言っているようにテーブルを作ってそこに年度データを持たせるのがベストな選択肢だろう。MDEとしてコンパイルする場合でも毎年MDEを作り直す必要が無くなる。
お礼
ご回答ありがとうとうございます!! モジュールの値を書き換える方法は難しいんですね。 >それよりかはそのNendo()を一箇所だけにして、全モジュールがそいつを参照するようにする方が良いだろう。標準モジュールにつくればそのMDB内でシステムグローバルに呼び出す事ができる。 一箇所だけにする というのはどういう意味ですか? その他のモジュールがNendo()を参照して、どのような処理をするのが良いでしょうか。 作成したテーブルの情報を引っ張って来る方法も分かりません。 質問ばかりで申し訳ないですが、ご教授いただけると嬉しいです!
お礼
ご回答ありがとうございます!! 用途をご説明いたします。 業績管理をしており、例えば、[発生年月]・[受注高]というフィールドがありクエリで集計しています。 受注上期: IIf(T金額!発生年月 Between DateSerial(honnen(),4,1) And _ DateSerial(honnen(),9,30),T金額!受注高,0) このような集計を多数行っています。 他には、[原価]に当年の[共通比配賦率]○○%(当年はこの率を使うと決まっていて毎年変わる)を掛けて共通費を算出したり。 共通費上期: 原価*Tounenkyotu() また、繰り越す(年をまたぐ)物件があるため、前年の[共通比配賦率]も使用して算出することもあります。 共通繰入: [繰入原価]*Zennenkyotu() 全てクエリで計算し、それを使用してレポートを作成しています。 >これだと、データとして何にも使えますが もしかしてモジュールじゃなく、普通にテーブルデータを利用してできるってことですか? そのパターンでもちょっと考えてみます。