VBA編程練習:生成25個隨機數並進行自動排序(基於Access)

2022年10月14日13:48:46 科技 1515

演算法練習要實現的目標

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

2.在Access文本框里加入25個隨機數字

3.要求數字不重複

4.按照從小到大排序

VBA編程練習:生成25個隨機數並進行自動排序(基於Access) - 天天要聞

最終實現的效果


主要應用技術:

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


.

科技分類資訊推薦

行業首發三大場景,小鵬聯手華為做出世界最好AR-HUD - 天天要聞

行業首發三大場景,小鵬聯手華為做出世界最好AR-HUD

昨日,小鵬汽車聯合華為智能汽車解決方案發布世界最好的車載AR-HUD——「追光全景」抬頭顯示,這是全球首個真正融入AI智駕的HUD解決方案,也是視覺效果最好的AR-HUD。發布會上,小鵬汽車副總裁、產品運營中心負責人陳永海表示:HUD的最大價值是對人的引導,強
800V+華為乾崑智駕,奧迪Q6L e-tron對比蔚來ES6誰更強? - 天天要聞

800V+華為乾崑智駕,奧迪Q6L e-tron對比蔚來ES6誰更強?

在2025粵港澳車展上,一汽奧迪Q6L e-tron家族正式開啟預售,作為PPE純電平台打造的首款旗艦車型,其在智能座艙、智能輔助駕駛、電子電氣架構以及「三電」系統方面實現了全面革新,堪稱今年豪華純電車市場的重磅之作。
座椅皮革如何清理? - 天天要聞

座椅皮革如何清理?

在汽車的使用過程中,一般深色衣服極其容易褪色,久而久之淺色皮革上會沾有一點顏色;另外灰塵、飲料、食物、油漬類等沾到皮革表面,也很影響座椅表面的清潔度。
哈弗 H6 國潮版一口價 7.19 萬元起!配備 12.3 英寸中控屏 - 天天要聞

哈弗 H6 國潮版一口價 7.19 萬元起!配備 12.3 英寸中控屏

在緊湊型 SUV 市場的激烈角逐中,哈弗 H6 國潮版以震撼低價掀起購車熱潮 —— 一口價 7.19 萬元起的超值定價,搭配越級配置,成為家庭用戶的高性價比之選。其中,1.5T 手動兩驅都市版售價 7.19 萬元,1.5T 自動兩驅都市版售價 8.19 萬元,
極狐全新轎車諜照曝光!或命名為極狐 S1 - 天天要聞

極狐全新轎車諜照曝光!或命名為極狐 S1

新能源汽車賽道競爭愈發激烈,各車企紛紛加速新品布局。近日,一組極狐全新轎車的諜照在網路上曝光,據悉,這款新車或命名為極狐 S1。儘管諜照中的車輛身披厚重偽裝,但仍難掩其獨特魅力,從外觀到內飾,再到動力系統,都引發了市場的廣泛猜測與期待。
極氪 9X 車型實車曝光!計劃今第三季度正式上市 - 天天要聞

極氪 9X 車型實車曝光!計劃今第三季度正式上市

近日,極氪旗下全新車型 —— 極氪 9X 實車驚艷曝光,引發汽車圈廣泛關注。據悉,這款備受期待的車型計劃於今年第三季度正式上市,有望為緊湊級豪華純電 SUV 市場注入全新活力。從實車展現的外觀,及動力來看,極氪 9X 亮點滿滿,令人期待值拉滿。
中國關係型資料庫軟體市場年複合增長率超20%,軟體ETF連續3天凈流入超億元 - 天天要聞

中國關係型資料庫軟體市場年複合增長率超20%,軟體ETF連續3天凈流入超億元

截至2025年6月20日 13:02,中證軟體服務指數下跌1.29%。成分股方面,國聯股份領跌,電科網安、太極股份、恒生電子、啟明星辰跟跌。軟體ETF(159852)回調蓄勢。拉長時間看,截至2025年6月19日,軟體ETF近1年累計上漲29.13%。流動性方面,軟體ETF盤中換手3.44%,成交1.01億元。拉長時間看,截至6月19日,軟體ETF近1年日均