Sub Sample()
For i As Integer = 1 To 5
Debug.Print(i)
Next
MsgBox(i) ''エラー「名前'i'は宣言されていません」
End Sub
もちろん、次のようにFor Eachで使うことも可能です。
Sub Sample()
Dim buf As String = "a,b,c"
Dim tmp() As String = buf.Split(",")
For Each c As String In tmp
Debug.Print(c)
Next
End Sub
配列
VS 2005ではOption Baseをサポートしていませんので、配列の下限値は常に0です。
配列の要素数を調べるのに、VBAではUBound関数を使いましたが、VB 2005ではUBound関数以外に、配列のLengthプロパティで要素数を取得できます。
Sub Sample()
Dim buf(2) As String, i As Long
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
For i = 0 To UBound(buf)
Debug.Print buf(i)
Next i
End Sub
Sub Sample()
Dim buf(2) As String, i As Long
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
For i = 0 To buf.Length - 1
Debug.Print(buf(i))
Next i
End Sub
また、次のように宣言時に配列を初期化することも可能です。
Sub Sample()
Dim i As Long, buf() As String = {"tanaka", "yamada", "suzuki"}
For i = 0 To buf.Length - 1
Debug.Print(buf(i))
Next i
End Sub
Sub Sample()
Dim buf(2) As String, i As Long
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
ReDim Preserve buf(3) ''エラー
buf(3) = "ono"
For i = 0 To UBound(buf)
Debug.Print buf(i)
Next i
End Sub
Sub Sample()
Dim buf(2) As String, i As Integer
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
ReDim Preserve buf(3) ''正常
buf(3) = "ono"
For i = 0 To buf.Length - 1
Debug.Print(buf(i))
Next i
End Sub
Sub Sample()
Dim buf(2) As String, i As Integer, msg As String = ""
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
Array.Sort(buf)
For i = 0 To buf.Length - 1
msg &= buf(i) & vbCrLf
Next i
MsgBox(msg)
End Sub
Sub Sample()
Dim buf(2) As String, i As Integer
buf(0) = "tanaka"
buf(1) = "yamada"
buf(2) = "suzuki"
i = Array.BinarySearch(buf, "yamada")
MsgBox(buf(i))
End Sub
Type myData
A As Long
B As Long
End Type
Sub Sample()
Dim buf As myData
buf.A = 1
buf.B = 2
Debug.Print buf.A + buf.B
End Sub
Structure myData
Dim A As Integer
Dim B As Integer
End Structure
Sub Sample()
Dim buf As myData
buf.A = 1
buf.B = 2
Debug.Print(buf.A + buf.B)
End Sub
VB 2005の構造体には、独自のメソッドを定義できます。
Structure myData
Dim A As Integer
Dim B As Integer
Function SUM() As Long
SUM = A + B
End Function
End Structure
Sub Sample()
Dim buf As myData
buf.A = 1
buf.B = 2
Debug.Print(buf.SUM)
End Sub