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


.

科技分類資訊推薦

最暢銷國產高端旗艦易主!華為Mate 70系列超越小米15系列 - 天天要聞

最暢銷國產高端旗艦易主!華為Mate 70系列超越小米15系列

快科技7月11日消息,博主數碼閑聊站今天公布了截止W27/7月6日的國產四大旗艦系列累積激活銷量。數據顯示,華為Mate 70系列銷量達到589.6萬,反超小米15系列,成為最暢銷的國產旗艦系列。小米15系列銷量則是以586.1萬位列第二,此前曾長期霸榜第一。這兩大旗艦目前是國產頂樑柱,其他兩款差距被明顯拉大,vivo X200系列409....
影馳出擊BW2025:從顯卡編年史到AI未來,一場科技×二次元的夢幻聯動 - 天天要聞

影馳出擊BW2025:從顯卡編年史到AI未來,一場科技×二次元的夢幻聯動

玩家和二次元愛好者們一年一度的盛典終於來了。2025年7月11日至13日, Bilibili World(簡稱BW)在上海國家會展中心盛大開幕。在這場融合ACGN文化與科技數碼潮流的盛會中,影馳(GALAX)攜旗下全系列產品震撼登場。以極具科技感的展台設計、豐富的互動活動和強勁的產品陣列,為參加BW的玩家打造了一個吸引力拉滿的科技數碼...
從遊戲到生產力,藍戟攜Intel全系顯卡亮相Bilibili World 2025 - 天天要聞

從遊戲到生產力,藍戟攜Intel全系顯卡亮相Bilibili World 2025

Bilibili World 2025如期而至,作為一年中二次元和科技玩家的頂級盛會,這次展會依舊群星璀璨。不僅有眾多遊戲廠商,許多數碼硬件廠商也來湊熱鬧,而在此次眾多的硬件廠商中,藍戟(GUNNIR)作為Intel顯卡中國大陸核心合作夥伴,憑藉著Intel消費級與企業級顯卡的雙線陣容,以及別出心裁的「遊戲集章」互動機制,成功成為BW...
地平線總裁陳黎明:高階智能輔助駕駛的拐點已經到來,將會快速增長 - 天天要聞

地平線總裁陳黎明:高階智能輔助駕駛的拐點已經到來,將會快速增長

紅星資本局7月11日消息,今日,地平線(09660.HK)總裁陳黎明在2025中國汽車論壇上表示,高階智能輔助駕駛的拐點已經到來,後面會有比較快速的增長。對此,他表示依據有三:第一,智能駕駛是我國智能網聯新能源汽車發展戰略的一個重要組成部分,政府工作報告對智能汽車的發展做出了規劃和行動方向。在電動化上,地平線可以...
洛斐發佈Flow2矮軸三模無線機械鍵盤 - 天天要聞

洛斐發佈Flow2矮軸三模無線機械鍵盤

沒想到,洛斐Flow系列這麼快就進入迭代了,發佈全新Flow2。引入了全新的設計語言,依然是全鋁金屬外殼機身,邊框像蘋果手機那樣的直板機身。其中,右側部分加長,側面則是增加了Touch Bar觸控滑動條,支持調節燈光亮度或系統音量。另一方面,鍵盤背面增加了同樣極具辨識度的撐腳模塊,支持兩種角度調節。 同時還全新升級了...
大爺寫《我的母親》火爆全網!視頻發佈者最新發聲 - 天天要聞

大爺寫《我的母親》火爆全網!視頻發佈者最新發聲

連日來,一段關於大爺挑戰寫作1957年高考同題作文《我的母親》的視頻火爆全網。不少網民表示,文字質樸,催人淚下,深深被打動。7月11日,大皖新聞記者聯繫上了視頻發佈者連文傑。對方表示,視頻中展示的作文內容由大爺獨立寫作,產生的版權收入也全給大爺。大爺寫作文視頻走紅網絡。大爺寫的作文在網上爆火大皖新聞記者注...