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


.

科技分類資訊推薦

零跑全新C11上市,14.98萬起售 - 天天要聞

零跑全新C11上市,14.98萬起售

7月10日,零跑汽車旗下智能越享中型SUV——全新C11正式上市,上市指導價14.98-16.58萬元。零跑C11上市4年來,累計銷量已突破25萬台,是零跑的重要的走量車型,全新C11在造型設計、智能座艙、續航性能、輔助駕駛、駕控體驗及安全基因等六大維度實現全面升級。此次上市的全新C11延續純電與增程雙動力版本,其中,純電車型搭載...
張旭院士:我國類腦智能規模應用潛力巨大 - 天天要聞

張旭院士:我國類腦智能規模應用潛力巨大

7月11日,省加快推進現代化產業體系建設專題會議(人工智能與機械人產業專場)在廣州舉行。現場,來自相關領域的專家學者、企業家、人大代表、研究機構代表踴躍發言,為廣東人工智能與機械人產業的發展積極建言、出謀劃策。中國科學院院士、廣東省智能科學與技術研究院院長張旭表示,類腦智能技術作為新一代智能技術的核心...
【芯片】Tensor G5曝光,Pixel10工程機現身海鮮市場 - 天天要聞

【芯片】Tensor G5曝光,Pixel10工程機現身海鮮市場

近日谷歌Pixel 10 Pro Fold出現在了GeekBench跑分數據庫中:新機搭載了谷歌全新的Tensor G5處理器,據悉這代終於是告別了三星工藝,轉而擁抱台積電N3E工藝。從顯示信息來看,Tensor G5採用了1+5+2的八核CPU架構,1*3.78GHz X4超大核+5*3.05GHz A725大核+2*2.25GHz A520小核構成。單核
【新機】2K屏+潛望長焦,iQOO 15曝光 - 天天要聞

【新機】2K屏+潛望長焦,iQOO 15曝光

說到iQOO的數字旗艦系列,這代iQOO13相機被刀還是挺可惜的,主要也是為了避免和老大哥X200產生衝突。今天@數碼閑聊站曝光了下代iQOO旗艦的信息:新機可能會跳過iQOO 14,直接命名為iQOO 15,這代將會有中杯/大杯兩個杯型。新機將會採用6.85英寸2K LIPO三星定製直面屏,屏幕邊框極窄,支持Pol-less去偏光技術,還具有AR抗眩...
清華專家破百年陳規!滬上論壇曝電力革新,陳磊構想太敢了 - 天天要聞

清華專家破百年陳規!滬上論壇曝電力革新,陳磊構想太敢了

聽說了嗎?清華大學的專家居然說要徹底打破電力系統運行了上百年的規矩!就在上海那場新能源論壇上,陳磊研究員拋出個重磅觀點 —— 以後用電不用再看頻率臉色,有功功率想咋調就咋調!這事兒要是真能成,咱們家裡的空調、電動車充電可就再也不會因為電網不
消費活力釋放,上海零售商業形態向「文商旅體展」融合演進 - 天天要聞

消費活力釋放,上海零售商業形態向「文商旅體展」融合演進

2025年二季度,在上海市政府經濟刺激方案推動下,上海商業市場消費活力逐步釋放,但零售物業租賃指標的復蘇態勢仍顯平緩。核心商圈平均租金為1877元/平方米/月,平均出租率為94.71%,整體表現與去年同期持平,其中徐家匯、陸家嘴等商圈憑藉成熟商業生態,表現相對突出。但與非核心商圈相比,從存量、新增供應、凈吸納量等指...