性格いい人が優勝

Access2003を使用しています。初心者です。
現在モジュールに以下のようなプロシージャを書いて、クエリ内の数式で使用しています。

 Public Function Nendo() As Integer
  Nendo = 25 ’年度
 End Function

このようなものが20個程あり、年度が変わるごとに全ての値を入力し直しています。
(年度・西暦・配付率などその年の数値)

これを、例えばメインフォームで”25”(年度)と入力したら、モジュールをその年のデータに全て書き換えるVBAを作りたいと思っています。

そこで”年度”を主キーにしたテーブルを作成し、そこに他の項目(西暦・配付率など)のフィールド(20個)を設定し、そのデータを利用できないかと考えています。

そもそもモジュールの値を書き換えたりできますか?
どのようなVBAを書けばいいか、教えていただけると幸いです。

A 回答 (2件)

>このようなものが20個程あり、年度が変わるごとに全ての値を入力し直しています。


>(年度・西暦・配付率などその年の数値)

これのデータを何に使用するのですか?レポートなど?

>そこで”年度”を主キーにしたテーブルを作成し、そこに他の項目(西暦・配付率など)の
>フィールド(20個)を設定し、そのデータを利用できないかと考えています。

これだと、データとして何にも使えますが、用途は?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!!

用途をご説明いたします。
業績管理をしており、例えば、[発生年月]・[受注高]というフィールドがありクエリで集計しています。

  受注上期: IIf(T金額!発生年月 Between DateSerial(honnen(),4,1) And  _
       DateSerial(honnen(),9,30),T金額!受注高,0)

  このような集計を多数行っています。

他には、[原価]に当年の[共通比配賦率]○○%(当年はこの率を使うと決まっていて毎年変わる)を掛けて共通費を算出したり。

  共通費上期: 原価*Tounenkyotu()

また、繰り越す(年をまたぐ)物件があるため、前年の[共通比配賦率]も使用して算出することもあります。

  共通繰入: [繰入原価]*Zennenkyotu()

全てクエリで計算し、それを使用してレポートを作成しています。


>これだと、データとして何にも使えますが
もしかしてモジュールじゃなく、普通にテーブルデータを利用してできるってことですか?
そのパターンでもちょっと考えてみます。

お礼日時:2013/11/28 12:03

> そもそもモジュールの値を書き換えたりできますか?


多分めちゃくちゃ難しい。VBAでVBAを変えるという事になるからね。つまり、Accessオブジェクトではなく、mdbをバイナリ解析してプロシージャ部分を切り出し、値を書き換えてバイナリファイルに戻して際コンパイルをかけるというような事をせねばならん。

それよりかはそのNendo()を一箇所だけにして、全モジュールがそいつを参照するようにする方が良いだろう。標準モジュールにつくればそのMDB内でシステムグローバルに呼び出す事ができる。

あなたが言っているようにテーブルを作ってそこに年度データを持たせるのがベストな選択肢だろう。MDEとしてコンパイルする場合でも毎年MDEを作り直す必要が無くなる。
    • good
    • 0
この回答へのお礼

ご回答ありがとうとうございます!!
モジュールの値を書き換える方法は難しいんですね。

>それよりかはそのNendo()を一箇所だけにして、全モジュールがそいつを参照するようにする方が良いだろう。標準モジュールにつくればそのMDB内でシステムグローバルに呼び出す事ができる。

一箇所だけにする というのはどういう意味ですか?
その他のモジュールがNendo()を参照して、どのような処理をするのが良いでしょうか。
作成したテーブルの情報を引っ張って来る方法も分かりません。

質問ばかりで申し訳ないですが、ご教授いただけると嬉しいです!

お礼日時:2013/11/27 16:33

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