dポイントプレゼントキャンペーン実施中!

こんにちは。


エクセルでの名前定義ですが、通常、下記のように、セル番地を使用すると思いますが、
配列を使用することは出来ないのでしょうか?

ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=Sheet1!$A$1:$B$2"


下記のようなマクロを作り実行しましたが、うまくいきませんでした。

Dim ABC(0 to 1)

ABC(0) = 1
ABC(1) = 2

ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=ABC"

ご指導のほど宜しくお願いいたします。

A 回答 (3件)

昔のことでうろ覚えですが、xl2003以前でグラフの系列にワークシートを介さないで値を設定する際に、データ数の制約回避のために、どこかで見つけて来て使った事があります。


http://oshiete.goo.ne.jp/qa/6368497.html
#4で、
For i = 1 To rs.RecordCount
arrayX(i, 1) = rs.Fields(1)
arrayY(i, 1) = rs.Fields(2)
rs.MoveNext
Next i
ThisWorkbook.Names.Add Name:="Date", RefersTo:=arrayX
ThisWorkbook.Names.Add Name:="Rate", RefersTo:=arrayY
てな事をやっています。
時間もないので詳しく見ておりませんが、ご参考まで。
    • good
    • 0
この回答へのお礼

mitarashiさん、こんにちは。

ありがとうございました。

可能性がありそうなので、試してみます!

お礼日時:2015/01/07 15:52

こんにちは。



私も、少し書かせていただきます。

名前定義自体は、ワークシート上のあくまでも、セルの範囲を名前付けすることですから、
VBAの変数を、セル上に埋め込むことはできませんね。
逆に、こんどは、セル上の配列というのは何かというと、あくまでも、数式的に存在するものですね。

>ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=ABC"
何を意図しているのか、あまりよく分かりませんが、RefersToLocal:=[****]のパラメータには、配列は入ります。ただし、VBAの配列ではなく、ワークシート上の配列です。

例えば、
RefersToLocal:="={1,2,3,4}"
このようなスタイルの配列です。セルの配列には、縦と横がありますから、1次元の縦、横、または、2次元(あくまでも論理的配列)までは入るはずです。
    • good
    • 0
この回答へのお礼

WindFallerさん、こんにちは。

VBAの配列はNGなんですね。

ありがとうございました。

お礼日時:2015/01/07 15:50

名前定義はセル範囲に対して行う物です。


配列変数に名前定義をする事は出来ません。
もしかしてやりたいのは配列のコピーでしょうか?
でしたらこんな感じで出来ます。

  Dim ABC(0 To 1), test As Variant
  ABC(0) = 1
  ABC(1) = 2
  test = ABC

質問の意味を勘違いしていましたら失礼
    • good
    • 0
この回答へのお礼

mt2008さん、こんにちは。

やはりセル範囲に対するものなんですね。

ありがとうございました。

お礼日時:2015/01/07 15:48

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

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