• ベストアンサー

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

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

  • puyopa
  • お礼率87% (459/525)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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

  • VBA 名前定義の参照について

    設定している名前定義を参照したいと思っています。 名称:タイプ 値 A1:サンプル1 A2:サンプル2 A3:サンプル3 A4:サンプル4 A5:サンプル5 と、設定されている場合に、これをVBAから (1) 「タイプ」という名前定義にいくつの値が設定されているのか (2) 「タイプ」という名前定義で設定されている個々の値 を取得したいと思っていますが、 調べてみても「定義されている名前の値」や 「定義されている名前の個数」の取得や削除の方法ばかりで 良く分かりませんでした・・・ ちなみに .Names("タイプ").Value で、設定セルの範囲は取得できます。 そこから、セルの値を直接見ることによって参照するものなのでしょうか?

  • Excel VBAで名前定義の記述について

    Excel2003ですが、データ部分の範囲が変わるため都度VBA で範囲を取得して名前定義を書き換えようと思っているのですが、範囲名は取得できますが、ダブルクオーテーションに囲まれてしまい、認識されません。手動で名前定義のダブルクオーテーションをはずすと認識されます。 下記コードでやっていますが、どのように記述すれば認識されるのでしょうか?教えてください Sub 名前定義() '***************************************************************************** '名前定義 Dim ソースデータ範囲 As Variant Dim 右下端 As Variant '名前→定義でソースデータ範囲を”DB”に定義 Range("A1").CurrentRegion.Select Selection.CurrentRegion.Select 右下端 = Selection.Item(Selection.Count).Address ソースデータ範囲 = データ! & "A1" & ":" & 右下端 Worksheets("データ").Activate ActiveWorkbook.Names.Add Name:="DB", RefersToR1C1:=ソースデータ範囲 End sub

  • Excel VBAでの名前の使い方

    Win7/Excel 2010で、セル範囲に名前を付け、VBAでデータを使おうと思います。セル範囲内の特定のセルの値を使おうと思いますが、方法はあるでしょうか? 行・列番号で、データを呼び出すプログラムでは、他の部分でセルの追加、削除をしたときでも、行列番号がずれてしまい、プログラムをその都度書き換える必要があります。セル範囲の名前を用い、範囲内のどの位置かを指定することができれば、プログラムを変える必要がなくなります。セルの1つづつに名前を付ければ、可能ですが、この場合、配列として取扱い難くなってしまいます。

  • エクセルVBAでセルの値を名前定義連続

    いつもお世話になってます。 エクセルVBA2013で質問です。 データ シートのC3から順次行方向にD3,E3と名前が入っています。 行方向に入る数は、下記のコードで取得できる数が上限になります。 i = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count + 2 そのC3から順次行方向のセルの値を名VBAで名前を定義したいと思っています。 参照範囲は、C3ならC列全体、D3ならD列全体・・・としていきたいです。 各セルに入る値は変化することがあります。C3に「あいう」と入力したり「AAA」と入力したりと変化します。その度に名前の定義を変更したいです。(イベントでなく普通にボタンを押して変更する) 名前が変わるので、同じ範囲で名前が違うものがいくつもできないようにしたいです。 すいません、色々条件ありますがどうぞよろしくお願いいたします。

  • VBAの書き方を教えてください

    EXCEL2003を使用しています。 特定のセルの値を取得して、値と同じシート名を検索して移動する事はVBAで可能でしょうか? 具体的に、sheet1のA1はVLOOKUPにて検索後の値(りんご)が表示されています。 コマンドボタンにて、A1の値(りんご)を取得して、数十枚あるシートの中からA1と同じ値(りんご)の名前のシートに移動したいのです。 いろいろ探したのですが、よく分からなかったので教えて下さい。

  • VBAでの名前定義に関して

    原因がどうしてもわからず質問させていただきます。 シートのあるセルの名前定義をしているのですが、その名前定義している部分でこまっています。 名前定義は確実にしてあるのですが ActiveWorkbook.Names("名前定義名称").RefersToRange.Address で取得すると結果は得られます。 しかし、 ActiveWorkbook.Worksheets("シート名称").Names("名前定義名称").RefersToRange.Address とすると取得ができません。 よく見ると、結果が得られるほうのNamesプロパティにはCountが0ではないですが、ActiveSheetで見るとCountが0になっているんのです。 どうしてこうなってしまうのかわからず、お分かりになられる方がいましたら教えていほしいです。

  • EXCEL 名前の定義 VBA参照の方法

    EXCELの名前の定義を、VBAから参照する方法を教えていただきたいのですが  名前を定義する    シートA  名前:TEST 範囲:シートA    シートB  名前:TEST 範囲:シートB    シートC  名前:Pass 範囲:ブック  それぞれをVBAから参照する場合    Range("TEST").Value: シートA内のVBA    Range("Pass").Value  では、参照できず。    Worksheets("シートA").Range("TEST").Value    Worksheets("シートC").Range("Pass").Value  にて、参照できました。 明示的なシート名入力が必要なのでしょうか? よろしくお願いいたします。

  • VBAでi行j列ずれたセルの値

    VBAでセルA1にTESTという名前を定義しているとします。 セルA1はRange("TEST")で値を取得できますが、 セルA1からi行j列ずれたセルの値はどうやって取得できるのでしょうか? 今までは、Cells(1+i,1+j)で取得していましたが、 行や列を挿入することもあるので、セルに名前を付けたいと思います。

  • VBAで名前定義を変更するとき

    おはようございます。 ExcelVBAで教えてください。 名前の定義はマクロの自動記録で解りました。 ActiveWorkbook.Names.Add Name:="名前A", RefersToR1C1:="=参照範囲" のようになりました。 VBAで参照範囲を変更したいとき、どのようにするのでしょうか? 再度、ActiveWorkbook.Names.Add Name:="名前A", RefersToR1C1:="=参照範囲" としてもエラーにはならなかったのですが、すでに"名前A"があるのに Names.Addとするのはおかしいかと思いました。 それで、どのようにするのかお教えください。

  • 名前の定義を自動でできる方法ってないでしょうか?

    名前の定義を自動でできる方法ってないでしょうか? セルA1に 定義する名前 セルA2に 範囲(はじまり) セルA3に 範囲(終わり) ドッロップリストにて定義した名前を表示する。 例えば、A1 野菜:B1 肉 A2 キャベツ:B2 豚 A3 レタス :B3 牛 D1にドロップダウンリストで範囲をA1:B1で選択 E2でドロップダウンリストで範囲をINDIRECT(D1)で選択 名前の定義を 範囲(A1:A3)名前を(上端行) 範囲(B1:B3)名前を(上端行) としていた場合。 B1を魚、B2を鯛、B3を鯵に変えた場合、自動的に名前の定義(名前)が「肉から魚」に変わり 鯛や鯵をドロップダウンリストに表示したいのですが? 出来るのでしょうか?

専門家に質問してみよう