VBA|數組操作及應用

在VBA中,數組是一組有序的變數的集合,相對於單個變數來說,可以更方便地組織和使用數據。

1 初始化數組

1.1 使用循環語句初始化數組

Sub 使用循環初始化數組()

Dim a(1 To 10) As Integer

For i = 1 To 10

a(i) = 0

Next i

End Sub

1.2 使用Array函數初始化數組

Sub 使用Array函數初始化數組()

Dim a As Variant, b As Variant

a = Array(1, 3, 5, 7, 9)

b = Array("A", "B", "C", "D")

End Sub

1.3 使用數組值初始化數組

Sub 用已有數組初始化數組()

Dim a(5), b()

Advertisements

For i = 0 To 5

a(i) = i

Next

b = a

End Sub

2 使用動態數組

Dim reData() As Integer

Sub 動態數組()

Dim i As Integer, j As Integer

i = Val(InputBox("請輸入數組的上界", "定義動態數組", 5))

ReDim reData(i)

For j = 1 To i

reData(j) = InputBox("請輸入數組的第" & j & "個元素的值")

Next

For j = 1 To i

Debug.Print reData(j)

Next

End Sub

3 清除數組

Sub 清除數組()

Dim aData(10) As Integer, str1 As String

Advertisements

str1 = "原數組中的數據:" & vbNewLine

For i = 0 To 10

aData(i) = i

str1 = str1 & "aData(" & i & ")=" & aData(i) & " "

Next

Erase aData '刪除原數組

str1 = str1 & vbNewLine & "使用Erase命令清除數組aData:" & vbNewLine

For i = 0 To 10

str1 = str1 & "aData(" & i & ")=" & aData(i) & " "

Next

MsgBox str1

End Sub

4 查詢數組的下標範圍

Sub 獲取數組下界範圍()

Dim aData(-100 To 100, 5 To 15, -3 To 4)

Dim str1 As String

str1 = "數組各維的下界為:" & vbNewLine

str1 = str1 & "第1維:" & LBound(aData, 1) & vbNewLine

str1 = str1 & "第2維:" & LBound(aData, 2) & vbNewLine

str1 = str1 & "第3維:" & LBound(aData, 3) & vbNewLine

str1 = str1 & vbNewLine & "數組各維的上界為:" & vbNewLine

str1 = str1 & "第1維:" & UBound(aData, 1) & vbNewLine

str1 = str1 & "第2維:" & UBound(aData, 2) & vbNewLine

str1 = str1 & "第3維:" & UBound(aData, 3) & vbNewLine

MsgBox str1

End Sub

5 數組元素排序

Option Base 1

Sub 數據排序()

Dim i As Integer, j As Integer

Dim k

Dim s(10) As Integer

For i = 1 To 10

s(i) = Application.InputBox("輸入第" & i & "個數據:", "輸入數組", , , , , , 1)

Next

For i = 1 To 9

For j = i + 1 To 10

If s(i) < s(j) Then

t = s(i)

s(i) = s(j)

s(j) = t

End If

Next

Next

For Each k In s

Debug.Print k

Next

End Sub

6 用數組生成彩票號碼

Option Base 1

Sub 幸運號碼()

Dim n As Integer, i As Integer, j As Integer

Dim l() As Integer

n = Application.InputBox("請輸入需要產生幸運號碼的數量:", "幸運號碼", , , , , , 2)

ReDim l(n, 7) As Integer

For i = 1 To n

For j = 1 To 7

Randomize

l(i, j) = Int(10 * Rnd)

Next

Next

For i = 1 To n

For j = 1 To 7

Debug.Print l(i, j);

Next

Debug.Print

Next

End Sub

7 用數組填充單元格區域

Option Base 1

Sub 數組填充單元格區域()

Dim i As Long, j As Long

Dim col As Long, row As Long

Dim arr() As Long

row = Application.InputBox(prompt:="輸入行數:", Type:=2)

col = Application.InputBox(prompt:="輸入列數:", Type:=2)

ReDim arr(row, col)

For i = 1 To row

For j = 1 To col

arr(i, j) = (i - 1) * col + j

Next

Next

Set Rng = Sheets(3).Range(Cells(1, 1), Cells(row, col))

Rng.Value = arr

End Sub

-End-

Advertisements

你可能會喜歡