天天看點

VBA程式設計練習:生成25個随機數并進行自動排序(基于Access)

作者:Access資料庫講師宇哥

算法練習要實作的目标

1.做1個窗體、包含兩個文本框

2.在Access文本框裡加入25個随機數字

3.要求數字不重複

4.按照從小到大排序

最終實作的效果

主要應用技術:

1.ForNext防止重複

2.冒泡算法排序

練習步驟

步驟1:制作輸出端(窗體)

做兩個文本框、兩個按鈕控件。一個文本框用于展示不重複的排列情況,另一個文本框用于展示有重複的情況。

VBA程式設計練習:生成25個随機數并進行自動排序(基于Access)
VBA程式設計練習:生成25個随機數并進行自動排序(基于Access)

步驟2:生成25個随機數(1-30),并要求不重複

代碼如下

For i = 1 To 25

a(i) = Int(30 * Rnd + 1)

For j = 1 To i - 1 '這段是防止重複的代碼

If a(i) = a(j) Then '如果重複了再次選擇

i = i - 1

End If

Next j

Next i

步驟2技術要點是建立一個數組a,利用一個ForNext進行數組指派。

難點是對25個随機數進行去重操作。方法是引入一個新變量j,每生成一個數字就跟上一個數字進行比較,如果相同就重新進行選擇。利用的也是ForNext操作。

去重操作代碼

For j = 1 To i - 1 '這段是防止重複的代碼

If a(i) = a(j) Then '如果重複了再次選擇

i = i - 1

End If

Next j

步驟3:用冒泡算法進行排序

冒泡算法的核心思想是引入一個中間變量t,不停地比較相鄰的數字。冒泡算法核心思想是把大數往下壓、小數往前擠出。如同氣泡往前走一樣。我會另外寫一篇文章介紹冒泡算法,本文隻做簡單介紹。

代碼如下:

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i) 't作為中間變量,冒泡算法常見

a(i) = a(j)

a(j) = t

End If

Next j

Next i

25個數字生成和數字排序設定在一個sub下,通過點選一次按鈕即可操作

步驟4:對輸入段進行分行操作

為了便于示範,25個數字要進行分行。每數到5進行一次回車。

tempStr是中間變量,用途是将數字分隔開,并逢5的倍數進行回車操作。運用If函數進行區分。

Chr(13)和Chr(10)是計算機的回車符号。

For i = 1 To 25

Text1 = Text1 + tempStr + CStr(a(i)) 'CStr轉換成字元串

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " " '換行

Else

tempStr = " "

End If

Next i

VBA程式設計練習:生成25個随機數并進行自動排序(基于Access)

完整代碼

Option Compare Database

Dim i As Integer

Dim j As Integer

Dim tempStr As String '中間變量,用于數列分行

Dim a(1 To 25) As Double '數組一共25個數字

Dim t As Double '中間變量,排序用

Private Sub Command1_Click()

Text1 = ""

tempStr = " "

'下面這段是生成不重複的25個數字,從1-30的數字裡選擇

For i = 1 To 25

a(i) = Int(30 * Rnd + 1)

For j = 1 To i - 1 '這段是防止重複的代碼

If a(i) = a(j) Then '如果重複了再次選擇

i = i - 1

End If

Next j

Next i

'這段是排序,運用冒泡算法

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i) 't作為中間變量,冒泡算法常見

a(i) = a(j)

a(j) = t

End If

Next j

Next i

'這段是在文本框裡生成25個數字

For i = 1 To 25

Text1 = Text1 + tempStr + CStr(a(i)) 'CStr轉換成字元串

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " " '換行

Else

tempStr = " "

End If

Next i

End Sub

Private Sub Command2_Click()

Text2 = ""

tempStr = " "

'下面這段是生成的25個數字(有可能重複),從1-30的數字裡選擇

For i = 1 To 25

a(i) = Int(30 * Rnd + 1)

Next i

'這段是排序,運用冒泡算法

For i = 1 To 25 - 1

For j = i + 1 To 25

If a(i) > a(j) Then

t = a(i)

a(i) = a(j)

a(j) = t

End If

Next j

Next i

'這段是在文本框裡生成25個數字

For i = 1 To 25

Text2 = Text2 + tempStr + CStr(a(i))

If i = 5 Or i = 10 Or i = 15 Or i = 20 Or i = 25 Then

tempStr = Chr(13) + Chr(10) + " "

Else

tempStr = " "

End If

Next i

End Sub

.