次の方法で共有

Access2010 レポート上の非連結テキストボックスのコントロールソースを動的に変更

Anonymous
2015-02-03T08:03:22+00:00

お世話になります。

レポート上の非連結テキストボックスのコントロールソースを動的に変更したいと思っています。

<入力データテーブル>

フィールド:A長、B長、C長、計算式名(←コンボボックス)

<A長>   <B長>   <C長>   <計算式名>

100      100       100       足し算

10      10      10      掛け算

<計算式コンボボックス用テーブル>

フィールド名:計算式名、計算式

>データ例

<計算式名>   <計算式>

足し算    [A長]+[B長]+[C長]

掛け算        [A長]*[B長]*[C長]

やりたいこと↓

レポート上にA長、B長、C長のテキストボックス、計算式名のコンボボックス、非連結のテキストボックス「計算値」を配置。

計算式名によって、A長、B長、C長の計算方法を動的に変化させたい→変化方法はVBA内でのselect等ではなく、テーブルにユーザーが書き込む(要は自作計算式)を利用し、計算値テキストボックスにそれぞれの計算結果を出力したい。

その為に、レポートOpen時に計算値テキストボックスのコントロールソースにVBAで

 "=”& me.計算式コンボボックス.column(1)と代入しているがme.計算式コンボボックス.column(1)が

Nullとなっており、代入・計算ができない。

直接、計算値テキストボックスのコントロールソースにはこういった事は書けないですし、行き詰っています。

テーブルに書き込んだユーザーの自作計算式を実装させる方法のアドバイスをお願い致します。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

質問作成者が受け入れた回答

Anonymous
2015-02-03T08:53:38+00:00

各レコードごとに計算式が異なるということですね。

フォーマット中では、コントロールソースを変更できませんので、

VBAでレコード毎にコントロールソースを書き換えるというのは不可能です。

テキストボックスのコントロールソースに下記の式を設定すればいいでしょう。

=Eval(Replace(Replace(Replace([計算式コンボボックス].Column,"[A長]",[A長]),"[B長]",[B長]),"[C長]",[C長]))

EVal関数は、文字列としての数式を、数式と解釈して演算結果を返します。

この回答は役に立ちましたか?

1 人がこの回答が役に立ったと思いました。
0 件のコメント コメントはありません

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-02-03T11:41:25+00:00

    ありがとうございました!出来ました!

    Eval関数ですね。覚えました。

    Eval関数でフィールド名を含んだコントロールソース生成ではなく、

    Replace関数でさらに数値に置き換えてコントロールソース生成し、代入するんですね。勉強になりました。

    ありがとうございました!

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2015-02-03T08:49:20+00:00

    す、すいません。わかりづらくて。。。汗

    コンボボックス列設定は間違っていません

    2列で、コンボボックス2列目column(1)で計算式を取得します。

    A長、B長、C長(いずれも数値です)のそれぞれの値の扱い方(計算)を

    計算式コンボボックス用テーブルに登録されたフィールド「計算式」によって結果を変えたいのです。

    VBAでselect case等の条件分岐 でA長、B長、C長の計算を変え、結果をテキストBOXに

    返すことはできますが、変更できるのはVBA内であって開発者です。

    ユーザーが自作の計算式をテーブルに格納することにより、計算結果を変動させたいのです。

    レポート上で数値計算させたい

    ↓ 

    計算結果のテキストボックスのコントロールソースに計算式を入力したいが、一定ではない

    VBAでテキストボックスのコントロールソース(計算式)を動的に変化させたい

       →計算式の取得元はレポート上のコンボボックスの2列目

    要約するとこんな感じです。。。。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2015-02-03T08:37:08+00:00

    こんばんは、ずっちです。

    非常に理解しづらい文章なので、何がしたいのかよくわかりませんが・・・

    me.計算式コンボボックス.column(1) が null っていう点で、

    コンボボックスの列数が1だったりしませんか?

    1であればcolumn(0)にしてください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません