プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
Excelで、セルやセル範囲、または、定数に「名前」を付け、それをVBAから参照することが出来ると思います。
セルやセル範囲を参照する場合は、Rangeを使って、次のように書くことが出来ました。

Range("名前A").Value

そこで質問なのですが、定数に付けた名前で、その値を参照する場合は、どのように書くのが一般的だと思いますか?

質問者からの補足コメント

  • 名前「大統領」の値「バイデン」をVBAで参照したいです。

    「VBAからの「名前」の参照方法」の補足画像1
      補足日時:2021/11/07 21:32
教えて!goo グレード

A 回答 (4件)

No.2です。



名前の定義範囲が1セルに対しての数式であるのなら、イミディエイトウィンドウでの検証ですが(複数セル範囲の検証は未実施)、

? Evaluate("大統領")
バイデン

でした。
勘違いでしたらごめんなさい。
    • good
    • 0
この回答へのお礼

Evaluate ・・・なるほどですね!!
Evaluateであれば、数式にも対応できそうですもんね。
ただ、値を取得したいだけなのに、ちょっとオーバースペックのような気がするのと、Evaluateの知名度ですよね。メンテに不安を感じるので、やはり、そもそもの発想がNGそうですね。
こんな質問にお付き合いいただき、ありがとうございました。

お礼日時:2021/11/09 20:57

こんばんは、


#1です。頓珍漢な回答をしてしまったのかも知れませんね。
上塗りをするようで恥ずかしいのですが、
素人の認識を書きます。違っているかと思いますが
ご教授を頂けるものであれば、お願いいたします。

セル、セル範囲に付けた名前の解釈なのですが、私は単セル、セル範囲に付ける変数名位に考えていました。内容が数式の場合はファンクションみたいに考えています。つまり、定数と言う考え方は私にはありませんでした。
名前を定義したセルの値を変えても名前が変わらない入物のような感じです。

名前定義されたセルの参照式ですが、ご質問にある通り
私もRange("名前A").Value でしょうか、
あとこれは、ママチャリ様の以前の回答にあったもので覚えたものですが
Range("名前A")(1).ValueとかRange("名前A").Item(1).Value とかでしょうか、
名前定義された範囲はコレクションになると思いますので
限定する必要がある場合Itemなどを付けるかと、、
また、範囲(コレクション?)なので
For Each c In Range("名前A")  のようなループで取得すると思います。
あと Application.Gotoも使えたと思います
Application.Goto Reference:="大統領"
Debug.Print Selection(1).Value
    • good
    • 0

勘違いでしたらすいません。



Const myRng As String = "名前A"

Range(myRng).Select
    • good
    • 0
この回答へのお礼

いつも回答、拝見させていただいております。
めぐみんさんの回答、このカテで一番、優しいですよね。
今回も、こんな訳わかんない質問にも回答を付けて頂き、感謝いたします。
なお、補足を付けましたので、お気づきのことがあれば、よろしくお願いします。

お礼日時:2021/11/07 21:44

こんにちは


ママチャリ様、いつも回答を参考にさせて頂いております。
ご質問についてですが、セルやセル範囲の名前と定数の名前は少し違うように思います。
RangeはObject型であり、Constはデータ型と理解しています。
定数名としてConstした名前は データ型 を扱う時と同じようにすれば良いと思います。

>どのように書くのが一般的だと思いますか?
趣味の範疇の私には、一般的を判断する事はスキル、経験不足で出来ませんが、
Const test As Long = 1
Dim buf As Variant
buf = 10 + test * 2
Debug.Print buf ; "::" ; test
そのまま定数名で参照すると思います。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
たしかに、定数の定義は、Const が一般的ですよね。
ただ、名前の定義では、セル範囲だけではなく、値や数式にも名前が付けられるということなので、ちょっとVBAから操作してみたいなと思った次第です。

補足に例を添付します。シート上の数式では参照できるのですが、これをVBAから参照する方法が知りたいです。

お礼日時:2021/11/07 21:30

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング