• ベストアンサー

エクセルのVBAでオブジェクトの配列変数は使えますか?

VBですとオブジェクトの配列変数というか、コピーしたときに自動的に配列になってしまいますが、エクセルのVBAの場合でオブジェクトの配列変数は使えますか? なにをしたいかというと、ボタンが多すぎて一つ一つにプログラム定義は面倒、そこで配列にしてまわすことにしたいのですが、エクセルで可能でしょうか。 どなたかお願いします。

  • nika
  • お礼率65% (98/149)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 コレクションというものがあります。複数のオブジェクトをコレクションにまとめ、インデックス値で識別出来ます。 以下に例を示します。 フォームにテキストコントロールが10個(Text1~Text10)あるとします。 ***宣言部に*** Private myCollect As New Collection ***例えばフォームのInitializeイベントに   With myCollect     .Add Item: = Text1     .Add Item: = Text2       :    :     .Add Item: = Text10   End With とコレクションを作成します。 そしたら、下のようにインデックス値でコントロールを識別出来ます。 'Cells(1, 1)~Cells(1, 10)にText1~Text10の値を順にセットする For i = 1 To 10   Cells(1, i) = myCollect(i).Value Next i では。

nika
質問者

お礼

ありがとうございます。 さっそくためしてみまーす。 またご連絡差し上げます。

nika
質問者

補足

補足欄になっちゃいましたけど、 うまくうごきましたよ。 しばらく、ウィルス関連で忙しかった ものですから、ご返事おそくなってしまって すいませんでした。 ありがとうございました。nika

関連するQ&A

  • エクセルVBAでサブルーチンへの変数の配列渡し

    エクセルVBAで、メインで使用してる配列変数(の値)をサブルーチンに渡したいが、どうすればよいでしょうか。(なお、メインプログラムは大きいためこれ以上は書けないのでサブルーチンを使用) よろしくお願いいたします。

  • エクセルvbaの変数について

    エクセルVBAについて、同じ型の値が複数列あった際に、変数に取り入れる方法として、それぞれ一つずつ別々に変数に入れる場合と、ユーザー定義型変数を定義して入れる場合の二つがあると思いま すが、どちらの方がメモリを使わなくて済むのでしょうか。また、他にも長短があればご教示下さい。

  • Excel97のVBAでの、配列について。

    TextBoxを直接配列にすることは出来ますか? VBでは、プロパティのINDEXか何かで設定ができたかと思います。 VBAではそれらしきものが見つかりません。 TextBox1(0).text・・・ TextBox1(1).text・・・こんなふうに。 変数を配列にしてSetするよりも簡潔に出来る方法を教えてください。

  • VBAの配列

    VBAの配列の処理でこまっています。 dim test as Variant test = Array( _ Array("Aさん", 65, 70, 45), _ Array("Bさん", 80, 10, 90)) とした成績データがありまして、あとから(定義の段階でなく)、"Cさん", 70, 70, 75をtest変数に追加したい場合、どのようにすればよいのでしょうか? また、これ(test)を戻り値にした場合、正しく左辺値にはいるのでしょうか?オブジェクトの解放などの問題も知りたいです。 function seiseki () as variant ... 上の処理 seiseki = test end function ...  dim cp as Variant cp = seiseki() 'cp変数にコピーされるのでしょうか?

  • 大量の変数を定義するにはどうしたら良いですか?

    VBA或いはVBのプログラムの最初で変数の型を定義したい場合、 変数が100個以上ある場合にはどうすれば良いのでしょうか? 100行にも渡って変数の定義を書くのはあまりにも見づらいと思います。何か良い方法がありましたら教えて下さい。

  • エクセルVBAでの変数のスコープ

    基本的なことなのですが、教えて下さい。 当方、PHPやjavascriptを中心にプログラムしてきたのですが、 今回、エクセル+VBAでプログラムすることになり、VBAを勉強しているところなのですが、ちょっと戸惑っています。 いままでは、グローバル変数をなるべく使わないように、プログラミングをしてきたのですが、 VBAの勉強で、参考にしている本のコードは、全てグローバル変数を使っています。 そもそも、エクセルのシート・セルがグローバル変数のようなもの(?)なので、変数のスコープにこだわってもあまり意味がないのかな?とも思います。 エクセル+VBAである程度の規模のプログラムを作る際、 変数のスコープはどのように使い分けるのが良いのでしょうか? すみませんが、ご教授の程、よろしくお願いします。

  • 配列にすると変数が入らない

    お世話になっています MS Excel2003のVBAで質問です find関数の結果を オブジェクト型変数だと入るのに、オブジェクト型配列だと入らない、 そういう仕様なんでしょうか? 成功 Dim result As Object Set result = wb2.Worksheets(1).Range(Cells(2, num), Cells(500, num)).Find(key) 実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです Dim result(10) As Object '検索結果 Set result(0) = wb.Worksheets(1).Range(Cells(i, num), Cells(500, num)).Find(key)

  • VBA オブジェクトが空かどうか判定する

    皆様のお知恵を拝借させてください。 エクセルVBAでオブジェクトを入れる変数を定義し、その変数にオブジェクト が入っているかどうか検査したいのですがどうしたらいいでしょうか。 例えば--- Dim a As Workbook If a <> nothing then ←この部分が分からない。このままだとエラー。 処理 End if --------- 環境 エクセル2003 WinXPsp1

  • EXCEL VBAでオブジェクトを削除するには?

    EXCEL2000を使用しています。 HPからコピーした表を利用して、VBAで加工したいと思っています。 HPからコピーした場合、不要なオブジェクトがある為、まずこれを消したいのです。 EXCELでの一般的な方法としては、オブジェクトの選択をしてから、範囲指定をし、削除すれば処理できます。VBAではオブジェクトの名前を指定しなければならないと思うのですが、HP上の、オブジェクトの名前は頻繁に変わる為、名前を指定するという方法では、使いづらいのです。 何か良い方法はないでしょうか?

  • Excelオブジェクト

    エクセルオブジェクトに関して質問です。 VBより起動したExcelをExcelの"×"ボタンで閉じると、タスクにExcelオブジェクトが残ってしまいます。Excelの"×"ボタンを使用し、タスクからも完全にExcelオブジェクト解放する方法はありますか? よろしくお願いします。

専門家に質問してみよう