« 配列の要素数を取得する | メイン | メーラーを起動する »

配列の要素数を動的に変更する

要素数を変更できる動的配列は2通りの定義方法があります。

1.括弧内の要素数を省略する
この場合、使用する前に要素数を再定義する必要があります。


Dim ary() As String
(省略)
Redim ary(10)

2.ヴァリアント型として定義する
この場合はarray関数で配列を代入します。


Dim ary As Variant
(省略)
ary = array("0","1","2","3")

要素数を変更する場合にはRedimを使用して再定義します。
このときPreserveキーワードを指定すると内容を保持したまま
要素数を変更します。
ただし、Preserveキーワードは一番最後の次元の要素数以外の変更はできません。

以下のサンプルでは配列の要素数を変更し、その内容を表示させるものです。


Sub sample()

Dim Ary As Variant
Dim Ix As Integer
Dim SavedIx As Integer
Dim Msg As String
Dim LastWord As String

Ary = Array("A", "B", "C", "D", "E")
SavedIx = UBound(Ary)
LastWord = "次に内容を保存したまま" _
& vbNewLine & "要素数2で再定義します." _
& vbNewLine & vbNewLine & "ReDim Preserve Ary(2)"
GoSub display

ReDim Preserve Ary(2)
LastWord = "次は要素数を戻します." _
& vbNewLine & vbNewLine & "ReDim Preserve Ary(SavedIx)"
GoSub display

ReDim Preserve Ary(SavedIx)
LastWord = "一度失われた内容は復元しません." _
& vbNewLine & "配列を戻します."
GoSub display

Ary = Array("A", "B", "C", "D", "E")
LastWord = "次にPreserveを使用しないで" _
& vbNewLine & "要素数2で再定義します." _
& vbNewLine & vbNewLine & "ReDim Ary(2)"
GoSub display

ReDim Ary(2)
LastWord = "内容は全て失われます." _
& vbNewLine & "配列を戻します."
GoSub display

Ary = Array("A", "B", "C", "D", "E")
LastWord = "現在の配列数で再定義すると" _
& vbNewLine & "内容のクリアができます." _
& vbNewLine & vbNewLine & "ReDim Ary(UBound(Ary))"
GoSub display

ReDim Ary(UBound(Ary))
LastWord = "以上で、おしまいです."
GoSub display

Exit Sub

display:
Msg = "配列の内容" & vbNewLine
For Ix = 0 To UBound(Ary)
Msg = Msg & "  ary(" & Ix & ") = " & Ary(Ix) & vbNewLine
Next

MsgBox Msg & vbNewLine & vbNewLine & LastWord
Return

End Sub

ひとつ前の投稿は「配列の要素数を取得する」です。
次の投稿は「メーラーを起動する」です。

トラックバック

このエントリーのトラックバックURL:
http://www.xillion.net/mova/mt-tb.cgi/90

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2004年02月29日 00:00に投稿されたエントリーのページです。

メインページアーカイブページも見てください。

Powered by
Movable Type 3.34