1

初心者の質問で申し訳ありませんが、現在、マルチ配列 (配列の配列) が必要な場合は、Variant として宣言します。

Dim ma() As Variant
ReDim ma(1 To 3)
ma(1) = Array(1, 2, 3)

それが機能することに加えて、代替宣言があることを知りたいです。たとえば、次は機能しません。

Dim mm() As Integer()
Dim mm()() As Integer

PSみんなの反応に感謝します。しかし、私の質問は明確ではないと感じています。多次元配列についてでも、配列のサイズについてでもありません。Typeについてです。はい、マルチ配列 (配列の配列) の例はたくさんありますが、それらはすべてVariant. たぶん(そうではないのと同じように)それがマルチアレイを作成する唯一の方法ですか?それは私が知る必要があるすべてです。

4

6 に答える 6

1

はい、少なくとも「外側の配列」にはバリアントを使用する必要があります。もちろん、「配列の配列」を使用する利点は、不規則な配列を使用できることです (サブ配列は、すべて同じではなく、さまざまな LBound/UBound 値を持つことができます)。

于 2013-04-01T21:34:36.473 に答える
1

3 次元配列では、次のように指定できます。

Dim ma(1 To 3, 1 To 2, 0 To 5) as Integer
Dim mb(0 To 2, 0 To 2, 0 To 2) as Integer
于 2013-03-31T11:48:42.303 に答える
0

空の () で宣言すると、後で必要な寸法で再調整できます

次のプロジェクトを作成して実行し、2 つのコマンド ボタンをクリックして、表示されたデータを確認します。

'1 form with
'    2 command buttons : name=Command1, name=Command2
'    1 label : name=Label1
Option Explicit

Private mintVal() As Integer

Private Sub Command1_Click()
  Dim intIndex1 As Integer, intIndex2 As Integer, intIndex3 As Integer
  ReDim mintVal(5, 3, 4) As Integer
  For intIndex1 = 0 To UBound(mintVal, 1)
    For intIndex2 = 0 To UBound(mintVal, 2)
      For intIndex3 = 0 To UBound(mintVal, 3)
        mintVal(intIndex1, intIndex2, intIndex3) = intIndex1 + intIndex2 + intIndex3
      Next intIndex3
    Next intIndex2
  Next intIndex1
  ShowVals3
End Sub

Private Sub Command2_Click()
  Dim intIndex1 As Integer, intIndex2 As Integer
  ReDim mintVal(3, 7) As Integer
  For intIndex1 = 0 To UBound(mintVal, 1)
    For intIndex2 = 0 To UBound(mintVal, 2)
      mintVal(intIndex1, intIndex2) = intIndex1 * intIndex2
    Next intIndex2
  Next intIndex1
  ShowVals2
End Sub

Private Sub Form_Resize()
  Dim sngWidth As Integer, sngHeight As Single
  Dim sngCmdWidth As Single, sngCmdHeight As Single
  sngWidth = ScaleWidth
  sngCmdHeight = 495
  sngCmdWidth = sngWidth / 2
  sngHeight = ScaleHeight - 495
  Label1.Move 0, 0, sngWidth, sngHeight
  Command1.Move 0, sngHeight, sngCmdWidth, sngCmdHeight
  Command2.Move sngCmdWidth, sngHeight, sngCmdWidth, sngCmdHeight
End Sub

Private Sub ShowVals2()
  Dim intIndex1 As Integer, intIndex2 As Integer
  Dim strShow As String
  strShow = ""
  For intIndex1 = 0 To UBound(mintVal, 1)
    strShow = strShow & CStr(mintVal(intIndex1, 0))
    For intIndex2 = 1 To UBound(mintVal, 2)
      strShow = strShow & "," & CStr(mintVal(intIndex1, intIndex2))
    Next intIndex2
    strShow = strShow & vbCrLf
  Next intIndex1
  Label1.Caption = strShow
End Sub

Private Sub ShowVals3()
  Dim intIndex1 As Integer, intIndex2 As Integer, intIndex3 As Integer
  Dim strShow As String
  strShow = ""
  For intIndex1 = 0 To UBound(mintVal, 1)
    For intIndex2 = 0 To UBound(mintVal, 2)
      strShow = strShow & CStr(mintVal(intIndex1, intIndex2, 0))
      For intIndex3 = 1 To UBound(mintVal, 3)
        strShow = strShow & "," & CStr(mintVal(intIndex1, intIndex2, intIndex3))
      Next intIndex3
      strShow = strShow & vbCrLf
    Next intIndex2
    strShow = strShow & vbCrLf
  Next intIndex1
  Label1.Caption = strShow
End Sub
于 2013-04-02T10:20:05.300 に答える
0

ここで良い例を見つけました:http://windowssecrets.com/forums/showthread.php/79979-Array-of-Arrays-(VB6)

Dim ArrayArray() As Variant
ReDim ArrayArray(1)

Dim StringArray() As String
Dim DateArray() As Date

ReDim StringArray(2, 3)
ReDim DateArray(4, 5)

ArrayArray(0) = StringArray
ArrayArray(1) = DateArray

ここにチュートリアルがあります: http://visualbasic.freetutes.com/learn-vb6/arrays-of-arrays.html

于 2013-03-31T13:02:46.823 に答える