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年日均