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


.

科技分類資訊推薦

蘋果Vision Pro頭顯新專利:屏幕位置/角度隨心調,提升佩戴舒適度 - 天天要聞

蘋果Vision Pro頭顯新專利:屏幕位置/角度隨心調,提升佩戴舒適度

【TechWeb】科技媒體PatentlyApple報道稱,蘋果公司最近獲得了一項關於Vision Pro頭顯的新專利,該專利的目的是為了提升頭顯的佩戴舒適度。這項專利的核心創新在於允許用戶根據個人偏好和需求調整屏幕的位置。專利描述顯示,這款頭顯包含一個顯示單元和一個固定帶,用戶可以通過固定帶佩戴頭顯,讓屏幕位於眼睛前方。頭顯配...
2025西門子Simcenter仿真與試驗技術峰會在皖成功舉辦 - 天天要聞

2025西門子Simcenter仿真與試驗技術峰會在皖成功舉辦

5 月 23 日,為期四天的 2025 西門子大中華區 Simcenter 仿真與試驗技術峰會在合肥圓滿落幕。大會以「工程創新,智啟未來」為主題,匯聚千餘位製造業行業精英、技術領袖,及西門子全球專家,聚焦仿真與試驗前沿技術的發展與實踐,共探人工智能 (AI) 與數字孿生雙輪驅動的數智化產業變革趨勢。 Simcenter —— 全維度仿真能...
華為鴻蒙摺疊電腦預約量達11萬 部分版本已顯示缺貨 - 天天要聞

華為鴻蒙摺疊電腦預約量達11萬 部分版本已顯示缺貨

【CNMO科技消息】據CNMO了解,截至5月22日午間,華為旗下售價23999元起的鴻蒙摺疊電腦 ——HUAWEI MateBook Fold 非凡大師預約人數達到11萬。該款摺疊電腦於5月19日在nova 14系列及鴻蒙電腦新品發佈會上正式推出。華為首款鴻蒙摺疊電腦作為華為首款超薄摺疊電腦,它重1.16kg,平展薄度為7.3mm,閉合薄度為14.9mm。其
真我 Neo7 Turbo 手機搭載 7200mAh 電池 + 100W 快充 - 天天要聞

真我 Neo7 Turbo 手機搭載 7200mAh 電池 + 100W 快充

IT之家 5 月 23 日消息,真我 Neo7 Turbo 手機將於 5 月 29 日 14:00 發佈,realme 官方今日確認這款新機搭載 7200mAh 泰坦電池,支持 100W 快充。除此之外,這款新機還支持全場景旁路充電,遊戲、視頻、直播等多種場景邊充邊玩。IT之家注意到,今年 2 月發佈的真我 GT7 Pro 競速版手機便搭載旁路充電技術,宣稱
逆境鑄輝煌:美國打壓下小米3納米芯片橫空出世 - 天天要聞

逆境鑄輝煌:美國打壓下小米3納米芯片橫空出世

在全球科技競爭的激烈浪潮中,近年來,美國為了維持自身科技霸權地位,對中國科技企業發起了一輪又一輪的打壓,其手段不斷升級,通過技術封鎖、制裁禁令等一系列不合理舉措,妄圖遏制中國科技產業的蓬勃發展,阻礙中國科技崛起的步伐。
開源引擎Godot已為visionOS提供基本支持 - 天天要聞

開源引擎Godot已為visionOS提供基本支持

上個月,在開源遊戲引擎 Godot 的 GitHub 代碼倉庫中,發生了一件備受矚目的事情。visionOS 工程團隊里的一位蘋果員工,提交了一個規模龐大的拉取請求。這一請求意味着數千行代碼被添加到 Godot 中,專門用於實現對 visionOS 平台的支持。與此同時,該員工還正式提交書面申請,希望將這些代碼合併到 Godot 的主分支里。這一...
首發密集、消費場景上新……文博會亮點多多氣象新 - 天天要聞

首發密集、消費場景上新……文博會亮點多多氣象新

第二十一屆文博會昨日在深圳開幕,六千多家政府組團、文化機構和企業線上線下參展,比上屆增加265家。今天是文博會開幕的第二天,有哪些新品亮相?還有哪些亮點值得期待?總台央視記者 杜思源:在文博會的各個展區,都設有發佈專區,每天大約有二十多場新品發佈會在這裡舉行。首發密集打造文化新品超級發佈平台除了專區,在...