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


.

科技分類資訊推薦

董明珠稱孟羽童離開格力是因為「犯了很大錯誤」 | 大魚財經 - 天天要聞

董明珠稱孟羽童離開格力是因為「犯了很大錯誤」 | 大魚財經

5月20日,孟羽童貼出與董明珠對話稱,「時隔兩年,收到了來自前老闆的微信,像是心中的一塊大石頭終於落了地,心中是莫名的酸楚和感謝。」格力電器發文稱:「520這天,愛是有回應的。這個周五,歡迎回家吃飯。猜猜董總要跟誰吃飯。」5月23日當天,格
小米發布搭載3納米自研晶元旗艦產品 - 天天要聞

小米發布搭載3納米自研晶元旗艦產品

5月22日晚,中國科技界傳來喜訊:我國科技企業小米在京正式發布自研3納米手機SoC晶元,被命名為「玄戒O1」,這是中國大陸地區首次研發設計出3納米晶元。晶元是「現代工業糧食」,其製程工藝的先進性,是近年來全球科技競逐的焦點。製程工藝數值越低,意味著晶體管集成度越高、性能越強。「手機SoC晶元是系統級晶元,集成CP...
中國醫藥3億關聯收購金穗科技:轉型電商的豪賭 - 天天要聞

中國醫藥3億關聯收購金穗科技:轉型電商的豪賭

中經記者 蘇浩 盧志坤 北京報道(中國醫藥3.02億元收購關聯公司 公司公告/圖)近期,中國醫藥(600056.SH)擬以現金3.02億元收購控股股東通用技術集團旗下全資子公司新興集團持有的北京金穗科技開發有限責任公司100%股權。中國醫藥方面表示,如完成本次收購,金穗科技將成為中國醫藥全資子公司,將圍繞中國醫藥總體發展戰略...
QQ瀏覽器發布「AI高考通」,可一鍵生成個性化志願方案 - 天天要聞

QQ瀏覽器發布「AI高考通」,可一鍵生成個性化志願方案

隨著2025年高考臨近,騰訊旗下QQ瀏覽器於5月23日發布行業首個高考領域智能體(Agent)產品——「AI高考通」。該產品依託騰訊混元大模型技術,深度整合高考全流程服務,打造從備考到志願填報的一站式智能解決方案,開創「AI+教育」服務新模式。 作為連續7年服務高考的平台,QQ瀏覽器已累計為4億人次提供高考服務,構建了包含...
全球首創!這款京產髖關節手術機器人獲批上市 - 天天要聞

全球首創!這款京產髖關節手術機器人獲批上市

一款誕生在北京的手術機器人正在破解髖關節置換手術的諸多難題。記者23日從北京企業長木谷獲悉,由其自主研發的「ROPAHIP」人工智慧髖關節手術機器人已獲國家藥品監督管理局的上市批准。這款手術機器人是全球首創搭載人工智慧輔助骨科治療的創新醫療器械,為全球骨科治療貢獻了「中國方案」。骨關節炎是全球致殘率最高的慢...
擰緊機器人研發商「頂配機器人」完成數千萬元種子輪融資 - 天天要聞

擰緊機器人研發商「頂配機器人」完成數千萬元種子輪融資

機器人大講堂獲悉,擰緊機器人研發商「SLABOR頂配機器人」近日成功完成種子輪融資。該輪融資由梅花創投獨家投資,融資金額總計達數千萬元,將主要用於SLABOR頂配機器人技術迭代、產品系列完善及渠道市場拓展。 據機器人大講堂了解,SLABOR頂配機器人(全稱:深圳市頂配自動化技術有限公司)成立於2016年,是一家紮根於螺絲...
個人信息防泄露,認證方式權威!「國家網路身份認證」來了 - 天天要聞

個人信息防泄露,認證方式權威!「國家網路身份認證」來了

個人身份信息被非法採集,數字經濟缺乏可信數字身份作為支撐,互聯網平台難以找到權威、可靠、便捷的公民身份認證方式……基於個人真實身份信息的認證服務需求爆髮式增長,雖然部分滿足網路空間辦理業務的信任基礎,但也引發新的問題。公安部、國家互聯網信息辦公室等六部門近日聯合公布《國家網路身份認證公共服務管理辦法...