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

2次元配列の宣言について

  • すぐに回答を!
  • 質問No.194925
  • 閲覧数795
  • ありがとう数4
  • 気になる数0
  • 回答数6
  • コメント数0

お礼率 35% (35/99)

文字列の配列の場合
Dim m As Variant
Dim moji As String

m=Array("aa","bb","cc","dd",・・・)
moji=m(1)

とすれば"bb"がmojiに代入されるのはわかるのですが
これを二次元配列(3行4列)にする場合どのように
宣言(Dim~や、Array~)等はどのように記述すればよろしいですか?


基本的な質問でごめんなさい。
よろしくお願いします。
通報する
  • 回答数6
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全6件)

  • 回答No.2
レベル7

ベストアンサー率 28% (4/14)

単純に Dim a(1, 10) As Stringじゃ駄目ですか? 3次元なら Dima(1,10,100) As String 配列の大きさが変動するなら コードの途中で Redim a(1,10,100)とかって… ...続きを読む
単純に

Dim a(1, 10) As Stringじゃ駄目ですか?
3次元なら Dima(1,10,100) As String

配列の大きさが変動するなら
コードの途中で
Redim a(1,10,100)とかって…
お礼コメント
sakky_t

お礼率 35% (35/99)

回答ありがとうございました。
3次元の配列もあるんですね?
正直びっくりです。
投稿日時 - 2002-01-15 00:58:31
  • 回答No.1
レベル8

ベストアンサー率 36% (16/44)

typeを使うのはだめ? うちはそうしたけど、結構便利だった
typeを使うのはだめ?
うちはそうしたけど、結構便利だった
  • 回答No.3
レベル14

ベストアンサー率 51% (1179/2272)

こんにちは。maruru01です。 配列の要素数が決まっている場合(例えば3行4列)は、 Dim m(2, 3) As String Dim moji As String m(0, 0) = "aa" m(0, 1) = "bb"   :   : moji = m(0, 1) こんな感じで良いのではじゃないでしょうか。 要素数が未定の場合は動 ...続きを読む
こんにちは。maruru01です。
配列の要素数が決まっている場合(例えば3行4列)は、
Dim m(2, 3) As String
Dim moji As String

m(0, 0) = "aa"
m(0, 1) = "bb"
  :
  :
moji = m(0, 1)
こんな感じで良いのではじゃないでしょうか。
要素数が未定の場合は動的配列宣言して、後で宣言をしなおせば良いと思いますが。
Dim m() As String
要素数がa行b列に決まったら、
ReDim m(a-1, b-1)
として、各要素の値を代入していきます。
では。
お礼コメント
sakky_t

お礼率 35% (35/99)

返事遅くなってごめんなさい。
ぱそこん、調子わるくて。

回答ありがとうございました。
この方法でやり成功しました。
ありがとうございました。
投稿日時 - 2002-01-15 00:53:07
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

サンプルです。全て2次元配列を作成します。 しかし、※3subArrayは2次元配列のように見せているだけで、VBでいう2次元配列というものとは、ちょっと違います。 ※1と※2は配列要素が宣言してあるのと、実行途中で要素が定まるという違いがあります。 ※1に適したものの例(要素数が変わることがなく、要素数があらかじめわかっているもの) 信号の色、性別、都道府県、血液型 など ※2に適 ...続きを読む
サンプルです。全て2次元配列を作成します。
しかし、※3subArrayは2次元配列のように見せているだけで、VBでいう2次元配列というものとは、ちょっと違います。

※1と※2は配列要素が宣言してあるのと、実行途中で要素が定まるという違いがあります。


※1に適したものの例(要素数が変わることがなく、要素数があらかじめわかっているもの)
信号の色、性別、都道府県、血液型 など
※2に適したものの例(要素数が変わる恐れがある。もしくは要素数があらかじめわからない)
生徒の数、ユーザに都道府県を選択させたあとの市町村の数 など
※3に適したものの例
特に適したものはないが、プログラミングが楽。ただ宣言がVariantであるためにメモリ消費が大きいので、膨大な配列には使用を避けた方がいいかも?


※1
Sub subDim()
  Dim m(2, 3) As String
  
  Dim i  As Long
  Dim j  As Long
  
  m(0, 0) = "aa": m(0, 1) = "bb": m(0, 2) = "cc": m(0, 3) = "dd"
  m(1, 0) = "ee": m(1, 1) = "ff": m(1, 2) = "gg": m(1, 3) = "hh"
  m(2, 0) = "ii": m(2, 1) = "jj": m(2, 2) = "kk": m(2, 3) = "ll"
  
  For i = LBound(m, 1) To UBound(m, 1)
    For j = LBound(m, 2) To UBound(m, 2)
      Debug.Print m(i, j),
    Next j
    Debug.Print
  Next i
End Sub

※2
Sub subRedim()
  Dim m() As String
  
  Dim i  As Long
  Dim j  As Long
  
  ReDim m(2, 3) As String
  m(0, 0) = "aa": m(0, 1) = "bb": m(0, 2) = "cc": m(0, 3) = "dd"
  m(1, 0) = "ee": m(1, 1) = "ff": m(1, 2) = "gg": m(1, 3) = "hh"
  m(2, 0) = "ii": m(2, 1) = "jj": m(2, 2) = "kk": m(2, 3) = "ll"
  
  For i = LBound(m, 1) To UBound(m, 1)
    For j = LBound(m, 2) To UBound(m, 2)
      Debug.Print m(i, j),
    Next j
    Debug.Print
  Next i
End Sub

※3
Sub subArray()
  Dim m  As Variant
  
  Dim i  As Long
  Dim j  As Long
  
  m = Array(Array("aa", "bb", "cc", "dd"), Array("ee", "ff", "gg", "hh"), Array("ii", "jj", "kk", "ll"))
  
  For i = LBound(m) To UBound(m)
    For j = LBound(m(i)) To UBound(m(i))
      Debug.Print m(i)(j),
    Next j
    Debug.Print
  Next i
End Sub



それと#1のBigBoobsさんの発言で「type」とありますが、ぼくはその方法を知らないです。
その方法はどんな方法か、もしこの発言を見てたらサンプルを載せてもらえませんか?
お礼コメント
sakky_t

お礼率 35% (35/99)

いつもいつもありがとうございます。

ここに質問するといっつも
知らないことばっか吸収できてすごく
勉強になります。
投稿日時 - 2002-01-15 00:57:01
  • 回答No.5
レベル8

ベストアンサー率 45% (18/40)

1の方ではないですが、「TYPE」です。 (※用法的にはTYPEと動的配列を併用することが多いです) ◇宣言部 Private Type TEST   strA As String   strB As String   lngC As Long End Type Private TestArray() As TEST 実行部 sub subTEST() Dim I as ...続きを読む
1の方ではないですが、「TYPE」です。
(※用法的にはTYPEと動的配列を併用することが多いです)

◇宣言部
Private Type TEST
  strA As String
  strB As String
  lngC As Long
End Type

Private TestArray() As TEST

実行部
sub subTEST()
Dim I as integer

ReDim TestArray(0 to 9)

For I = 0 To 9
TestArray(I).strA = "A"
TestArray(I).strB = "B"
TestArray(I).lngC = I
Next

このような形になります。
この利点としては、異なるデータ型のものを一元管理できることがあげられます。
(DBのレコードをそのまま取り込めるので非常に便利)

でわ。
  • 回答No.6
レベル12

ベストアンサー率 65% (276/422)

oribeyakiさん ありがとうございます。 「Type」の意味は「独自の構造体をつくってみては?」という事だったのですね。 それならば納得です。 感謝です。
oribeyakiさん ありがとうございます。
「Type」の意味は「独自の構造体をつくってみては?」という事だったのですね。
それならば納得です。
感謝です。
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

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

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

特集


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

-PR-

ピックアップ

-PR-
ページ先頭へ