レポートのフォーマット時で特定の商品だけ色を変えたいのですがうまくいきません
テーブルに商品コードと色を入れてあります
Dim STR as String
STR = Dlookup("ForeColor","***","商品コード = '" & Me.商品コード & "'")
Me.商品名.ForeColor = STR (STRの中身はvbRed)
これでは型が一致しませんとなってしまいます。
RGBでは指定できるようなのですが一見何色かわからないのでColorContantsを使いたいのですが可能でしょうか
ご存じのかたご教授いただければ助かります。 よろしくお願いします
「ForeColor」フィールドのデータ型がテキスト型で、vbRed という文字が格納されているということですか。
VBAのコードでvbRedは定義済み定数で、中身は数値です。文字ではありませんので、そのエラーになります。
イミディエイトウィンドウで
?vbRed
と入力してEnterキーを押すと
255
と表示されます。この255がvbRedの中身です。
「ForeColor」フィールドのデータ型は数値型にして、赤にしたいなら255を入力してください。
定数の中身は上で説明したようにイミディエイトウィンドウで確認できます。
下記のようなテーブルを作成しておいて、それを参照するようにするといいでしょう。
ColorTbl
ありがとうございます。
番号でやってみます。
適当にできるだろうと思ってやったら痛い目を見ました
それこそデータベース化したらいいじゃないかということではありますが一応
※この掲示板ではEvalを半角で記述できないので、上記コードでは全角で記述しています
単に
Eval(str)
で実行できればよかったのですがACCESS(2013)では許されないようです無理やりどうにかする方法を見つけましたが完全に非推奨な方法です
動作原理からしても、やはりカラーコード対応テーブルで対応すべきとなります
ColorContantsで定義されているものだけなら、変換関数を自作してもいいかも。
標準モジュール