OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

VBのコントロール配列を二次元配列にする方法

  • 暇なときにでも
  • 質問No.215715
  • 閲覧数875
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 40% (11/27)

タイトル通りです。
テキストボックスなどをコントロール配列で持つときに二次元配列で持つ方法はないでしょうか?

ご回答の方、宜しくお願いします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル12

ベストアンサー率 40% (230/562)

コントロールのIndexプロパティを利用する方法では二次元配列はできません。
しかし、変数としての二次元配列ならできます。

Dim TextBoxes(3, 10) As TextBox

などとすると、テキストボックスの多次元配列ができます。
ただし、この変数にはインスタンスがないので、インスタンスは別に作成してやる必要があります。

以下に例を示します。

名前がTexts、Indexが0のTextBoxを配置します。
フォームモジュールに以下を貼り付けます。

Option Explicit

Private TextBoxes(3, 10) As TextBox

Private Sub Form_Load()

On Error Resume Next
Dim N As Long, M As Long, T As Long

For N = 0 To 2

For M = 0 To 9

T = N * 10 + M
Load Texts(T) 'Load Texts(0)はエラーだが無視される
Set TextBoxes(N, M) = Texts(T)
TextBoxes(N, M).Left = N * 1320
TextBoxes(N, M).Top = M * 300
TextBoxes(N, M).Visible = True

Next M

Next N

End Sub

Private Sub Texts_Click(Index As Integer)

MsgBox "これは(" & (Index \ 10) & ", " & (Index Mod 10) & ")です"

End Sub

この方法を使う場合、TextBoxes(N, M)のIndexプロパティはN * 10 + Mを示すので、注意が必要です。
お礼コメント
Mizyu

お礼率 40% (11/27)

ありがとうございます。これが知りたかったのです。
Dimで宣言すれば二次元配列にできそうだ、ということには気づいていたのですが。
インスタンスの生成が足りなかったのですね。ありがとうございました。
投稿日時 - 2002-02-12 10:15:27
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 39% (129/327)

Mizyuさん、こんにちは。 コントロール配列を二次元にする方法はありません!かな? 調べ切っていないのかも知れませんが、僕は知りません。 仮想二次元にして、その都度計算されたらいかがでしょうか。 例えば 5×8 の二次元とします。 DIM TBL(40) as string for i=1 to 5 for j=1 to 8 TBL((i-1)*8 + j ...続きを読む
Mizyuさん、こんにちは。
コントロール配列を二次元にする方法はありません!かな?
調べ切っていないのかも知れませんが、僕は知りません。

仮想二次元にして、その都度計算されたらいかがでしょうか。

例えば 5×8 の二次元とします。
DIM TBL(40) as string
for i=1 to 5
for j=1 to 8
TBL((i-1)*8 + j)="テスト"
next j
next i
  • 回答No.2
レベル12

ベストアンサー率 33% (196/589)

Mizyuさん、こんにちは。 コントロールを二次元配列にする方法は知りません。 ただ、二次元配列を添え字につかったらにた処理が出来ると思います。 dim iArry(10,10) as integer iArry(1,1)=1 iArry(2,1)=2 ... TEXT(iArry(1,1)).TEXT = "AAAAA" TEXT(iArry(2,1) ...続きを読む
Mizyuさん、こんにちは。

コントロールを二次元配列にする方法は知りません。
ただ、二次元配列を添え字につかったらにた処理が出来ると思います。

dim iArry(10,10) as integer

iArry(1,1)=1
iArry(2,1)=2
...

TEXT(iArry(1,1)).TEXT = "AAAAA"
TEXT(iArry(2,1)).TEXT = "BBBBB"
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ