• ベストアンサー

Arrayについて

Dim ar(1 To 6) As Integer Dim i As Integer for i = 1 to 6 ar(i) = i + 1 Next というソースがあり、作成された ar(2,3,4,5,6,7)という配列を、 Array(2,3,4,5,6,7)のようにArray()の中に入れたいのですが上手くいきません。どのようにしたら良いでしょうか? Array(ar)としても駄目でした。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

エクセルシートを削除するなら シートコレクションについて勉強しましょう。 コレクションのメンバーの指定は (1)名前で指定 (2)インデックスで指定(Item(index)) で指定できます。 #2のご回答や、Arrayは(1)の系統です。 (2)の系統のやり方も便利なときがあります For i=1 to 10 Sheets(i).Delete Next i (3)For Each sh in activeworkbook.Worksheets Next も便利なときがあります。 削除対象外のシートを右に寄せておいて、1-Nまでのインデックス文をDelete すればよい。 ーーー 質問でしたいと思われることを実現するには Sub test01() x = "a,b,c" s = Split(x, ",") 's = Array("a", "b", "c") '常識的 's = Array(x) '不可 For i = 0 To UBound(s) MsgBox s(i) Next i End Sub のように、アイテムをカンマで区切った文字列を作り カンマでSplit関数を使うと、配列に納めてくれることを 利用することです。 Arrayは初期値をプログラム内で表現するとき便利なだけで、 配列条例で、ar()に納めたのなら、改めてArray()にする必要はありません。それとar()と並ぶのは、s=Array()のs() と思います .

noname#15844
質問者

お礼

回答ありがとうございました~。 どうやら実現出来そうです。なんとなく分かりましたが、完璧に理解するために今後勉強していきたいと思います。

その他の回答 (2)

  • napstar
  • ベストアンサー率28% (2/7)
回答No.2

#1です。 作成したシートを削除するであれば、 For i=1 to 6 Sheets("Sheet" & ar(i)).Delete Next 質問文ソースの後に、 続けて記載すれば、作成したシートを 削除できると思います。 先程、array関数を使わなくてもって書いたのは 一旦For~Nextループで、arに変数が格納されて いるので、わざわざarray関数を使う必要が無い かなっと思ったからです。 (二度手間になるし。。。) どうしても、array関数でないと駄目ですか?

noname#15844
質問者

補足

再びの回答有難う御座います。 どうやら、その上記の方法ではインデックスエラーが起きてしまいます。。 それに、上記の方法ですと一つずつSheet1を削除する形になりますよね? Array使用すれば一気に削除出来るので、Arrayが良いんですよねぇ・・・。 単純に、ar(1,2,3・・・)という配列を Arrayに一気に突っ込むことは不可能なのでしょうか? 理想のイメージとしましては、Array(ar)のような感じなのですが。。

  • napstar
  • ベストアンサー率28% (2/7)
回答No.1

これだけでは、ちょっと分からないの ですが、array関数を使う必要あります? array関数をヘルプファイルにて確認して みれば、分かると思うのですが、確か バリアント型の変数を宣言して、配列を定義付け することが必要なのでは? とりあえずこんな感じで。 Dim ar As Variant ar = Array("2","3","4","5","6","7") でも、これって、For~Nextのループで arに格納されてるから、必要ないのでは? っと思った次第です。 もう少し、詳しく書いていただければ、 お力になれるかもしれませんが。。。

noname#15844
質問者

補足

説明が不足していたようで申し訳ありません。 何がしたいのかと言いますと、ExcelのSheetを削除したいのです。 流れとしては、 人数分(変数)だけSheet作成→その作成したSheetを配列arに格納(上の例ではSheet2~7)→Sheets(Array(2,3,4,5,6,7)).DeleteでSheetを削除 という感じです。要するに、いくつかSheetを作って、処理後それをArray使用して消したいのです。

関連するQ&A