• ベストアンサー

EXCELで定義した名前をVBAで参照する方法

いつもお世話になってます。 挿入→名前→定義で「Syouhizei=0.05」と定義しているのですが、これをマクロで使うときは、具体的にどう記述したらいいのでしょうか。 たとえば「Msgbox Syouhizei」では何も表示されません(>_<) EXCEL2000です。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 名前定義で、[参照設定]欄に「=0.05」と設定したということでしょうか? その場合、 MsgBox Application.Names("Syouhizei") とすれば、「=0.05」と表示されます。 >これをマクロで使うときは どうやって使うのか分かりませんが、数式に入れる場合は、 Range("B1").Formula = "=A1*Syouhizei" とすれば、A1に0.05を掛けた値がB1に表示されます。

snoopy64
質問者

お礼

早速の回答、ありがとうございます。 >名前定義で、[参照設定]欄に「=0.05」と設定したということでしょうか? そうです。 >MsgBox Application.Names("Syouhizei")とすれば、「=0.05」と表示されます。 はい、できました。 Application.Namesですか。参考にします。

snoopy64
質問者

補足

マクロ内で Const Syouhizei As Long = 0.05 としなくても、すでに名前で定義しているSyouhizeiをそのまま使いたかったのです。消費税変更時にも、マクロの定数を変更しなくてもいいように。。。 マクロ内で「0.05」という値としてSyouhizeiを使う方法はご存じないでしょうか。お願いします。

その他の回答 (1)

  • neKo_deux
  • ベストアンサー率44% (5541/12319)
回答No.1

とりあえず的には、 Msgbox Range("Syouhizei") で表示が可能だと思います。 処理に使うには、「zei=Range("Syouhizei").Value」とかでしょうか。

snoopy64
質問者

お礼

早速の回答、ありがとうございました。 ですが、 実行時エラー '1004': 'Range'メソッドは失敗しました:'_Worksheet'オブジェクト となってしまいます。。。

snoopy64
質問者

補足

自己レスです。 いろいろやってみて、 MsgBox Val(Replace(Application.Names("Syouhizei").Value, "=", "")) で解決しました。 もっとスマートなやり方もあるんでしょうが、 とりあえず解決しました。 回答を下さった皆様に感謝します。 ありがとうございましたヽ(^。^)ノ