• ベストアンサー

excel2003の vbaの名前定義について

excel2003の vbaで、名前定義した範囲から、任意のセルの値を抜き出したいです。 例えば、Aという名前定義した範囲があるとします。 AはA1セル~A10セルの範囲です。 そして、たとえいばA3セルの値を取得したい場合。 名前定義した範囲を使ってどのように表現すればよいでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

ご質問の直接の回答としては例えば msgbox range("A")(3) とかで十分です。取得してどーしたいのか説明が無いので回答するのに困りますが。 msgbox range("A").cells(3, 1) msgbox range("A").range("A3") みたいな書き方も可能なので、状況に応じて適切に応用します。

puyopa
質問者

お礼

一番分かりやすかったです。 ありがとうございました。

その他の回答 (2)

  • aisyun
  • ベストアンサー率12% (1/8)
回答No.3

定義した名前から1セルずつ取り出す方法もあります Dim myRange as Range For Each myRange In Range("A") If myRange.Address(RowAbsolute:=False,ColumnAbsolute:=False) = "A3" Then msgbox myRange.value End If Next

puyopa
質問者

お礼

勉強になりました。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >名前定義した範囲を使ってどのように表現すればよいでしょうか? 表現の仕方は色々あると思いますが、単純にセル番地で指定する方法です。 名前定義の名前は、極力アルファベットや数値は使わない方が良いので・・・ 仮に「名前」と名前定義した場合の一例です。 同一Sheetに名前定義している場合は問題ないと思いますが、別Sheetに名前定義した範囲がある場合 そのSheetをアクティブにする必要があるようですので、 一例です。(標準モジュールです) Sub Sample1() Dim str As String str = InputBox("検索したいセル番地を入力") '↓の1行はActiveSheetに名前定義範囲がある場合は不要です。 Worksheets("Sheet2").Activate '←Sheet2に「名前」と名前定義した範囲がある場合 If Intersect(Range(str), Range("名前")) Is Nothing Then MsgBox "指定範囲になし" Else MsgBox Range(str) End If End Sub ※ 関数で検索する場合はINDEX関数等を使うようになると思います。m(_ _)m

puyopa
質問者

お礼

勉強になりました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう