- ベストアンサー
エクセルの名前定義で配列は使用できない?
- エクセルの名前定義で配列を使用することはできないのか疑問です。
- 通常はセル番地を使用して名前定義を行いますが、配列の使用はできないのでしょうか?
- マクロを作成して配列を名前定義に使用しようとしましたが、うまくいきませんでした。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
昔のことでうろ覚えですが、xl2003以前でグラフの系列にワークシートを介さないで値を設定する際に、データ数の制約回避のために、どこかで見つけて来て使った事があります。 http://okwave.jp/qa/q6368497.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 てな事をやっています。 時間もないので詳しく見ておりませんが、ご参考まで。
その他の回答 (2)
- WindFaller
- ベストアンサー率57% (465/803)
こんにちは。 私も、少し書かせていただきます。 名前定義自体は、ワークシート上のあくまでも、セルの範囲を名前付けすることですから、 VBAの変数を、セル上に埋め込むことはできませんね。 逆に、こんどは、セル上の配列というのは何かというと、あくまでも、数式的に存在するものですね。 >ActiveWorkbook.Names.Add Name:="test", RefersToLocal:="=ABC" 何を意図しているのか、あまりよく分かりませんが、RefersToLocal:=[****]のパラメータには、配列は入ります。ただし、VBAの配列ではなく、ワークシート上の配列です。 例えば、 RefersToLocal:="={1,2,3,4}" このようなスタイルの配列です。セルの配列には、縦と横がありますから、1次元の縦、横、または、2次元(あくまでも論理的配列)までは入るはずです。
お礼
WindFallerさん、こんにちは。 VBAの配列はNGなんですね。 ありがとうございました。
- mt2008
- ベストアンサー率52% (885/1701)
名前定義はセル範囲に対して行う物です。 配列変数に名前定義をする事は出来ません。 もしかしてやりたいのは配列のコピーでしょうか? でしたらこんな感じで出来ます。 Dim ABC(0 To 1), test As Variant ABC(0) = 1 ABC(1) = 2 test = ABC 質問の意味を勘違いしていましたら失礼
お礼
mt2008さん、こんにちは。 やはりセル範囲に対するものなんですね。 ありがとうございました。
お礼
mitarashiさん、こんにちは。 ありがとうございました。 可能性がありそうなので、試してみます!