数组元素插入
Dim a() As Long
Private Sub Form_Load()
ReDim Preserve a(1 To 4)
a(1) = 1: a(2) = 2: a(3) = 3: a(4) = 4
Dim i As Long, m As Long
Debug.Print vbNewLine & "原数组元素:"
For i = 1 To 4
Debug.Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
Debug.Print vbNewLine & "插入后数组元素:"
Dim n As Long: n = 5
ReDim Preserve a(1 To 5)
For i = 2 To 5
m = a(i)
a(i) = n
n = m
Next i
For i = 1 To 5
Debug.Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
End Sub
数组元素删除
Dim a() As Long
Private Sub Form_Load()
ReDim a(1 To 4) As Long
Dim i As Long
a(1) = 1: a(2) = 2: a(3) = 3: a(4) = 4:
Debug.Print vbNewLine & "删除元素前"
For i = 1 To 4
Debug.Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
a(3) = a(4)
ReDim Preserve a(1 To 3)
Debug.Print vbNewLine & "删除元素后"
For i = 1 To 3
Debug.Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
End Sub
找到需要找到的数值
Private Sub Form_Click()
Dim a(1 To 10) As Long
Dim i As Integer
For i = 1 To 10
a(i) = i
Next i
a(8) = 19
For i = 1 To 10
Print "a(" & CStr(i) & ")=" & a(i)
Next i
For i = 1 To 10
If a(i) = 19 Then
MsgBox "查找的数值保存在数组元素a(" & CStr(i) & ")中。", vbOKOnly, "提示"
Exit For
End If
Next i
End Sub
选择排序法
Dim a(1 To 5) As Long
Private Sub Command1_Click()
a(1) = 3: a(2) = 2: a(3) = 7: a(4) = 9: a(5) = 5
Dim i As Long, l As Long, n As Long
For i = 1 To 4
For l = i To 5
If a(i) < a(l) Then
n = a(i)
a(i) = a(l)
a(l) = n
End If
Next l
Next i
For i = 1 To 5
Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
End Sub
冒泡排序法
Dim a(1 To 5) As Long
Private Sub Command1_Click()
a(1) = 3: a(2) = 2: a(3) = 7: a(4) = 9: a(5) = 5
Dim i As Long, l As Long, n As Long
For i = 1 To 4
For l = 1 To 4
If a(l) < a(l + 1) Then
n = a(l)
a(l) = a(l + 1)
a(l + 1) = n
End If
Next l
Next i
For i = 1 To 5
Print "a(" & CStr(i) & ")=" & CStr(a(i)),
Next i
End Sub
二分法排序
Dim myarray(100) As Integer
Private Sub Command1_Click()
Dim low, high, mid As Integer
Dim found As Boolean
low = 0
high = UBound(myarray)
found = False
mid = (high + low) / 2
Do While Not found And (high >= low)
If CInt(Text1.Text) = myarray(mid) Then
found = True
MsgBox (mid)
MsgBox (myarray(mid))
Exit Do
ElseIf CInt(Text1.Text) < myarray(mid) Then
high = mid - 1
Else
low = mid + 1
End If
mid = (high + low) / 2
Loop
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To UBound(myarray)
myarray(i) = i + 5
Print myarray(i)
Next i
End Sub
记录数组
Private Type peo
nam As String
age As Integer
End Type
Private Sub Command1_Click()
Dim a(1 To 2) As peo
a(1).age = 20
a(1).nam = "五一"
a(2).age = 23
a(2).nam = "万多"
For i = 1 To 2
Print a(i).nam; a(i).age & "岁"
Next i
End Sub
查找下标为0、上标为99的数组中值为“奥运”的元素索引值。
Dim a(0 To 99) As String
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 99
a(i) = "abcd"
Next i
a(88) = "奥运"
find
End Sub
Private Sub find()
Dim i As Integer
For i = 0 To 99
If a(i) = "奥运" Then
MsgBox "索引值为:" & i
Exit Sub
End If
Next i
End Sub