永发信息网

在vb中,有8个text框每列4个,左面四个添加数值,右面四个自动显示大小序号

答案:2  悬赏:10  手机版
解决时间 2021-11-26 15:25
在vb中,有8个text框每列4个,左面四个添加数值,右面四个自动显示大小序号
最佳答案
将左右两列Text分别设置为丙个控件数组Text1与Text2。
Dim A(0 To 3) As Integer
Dim i As Integer
Dim j As Integer
Dim Flag As Boolean
Dim Temp As Integer
For i = 0 To 3
A(i) = Val(Text1(i).Text)
Next
For i = 1 To 3
Flag = False
For j = 0 To 2
If A(j) > A(j + 1) Then
Temp = A(j)
A(j) = A(j + 1)
A(j + 1) = Temp
Flag = True
End If
Next
If Flag = False Then Exit For
Next
For i = 0 To 3
For j = 0 To 3
If A(i) = Val(Text1(j).Text) Then Text2(j).Text = i + 1
'以上是Text2从小到大显示,如果要从大到小,改成:
'If A(i) = Val(Text1(j).Text) Then Text2(j).Text = 4 - i
Next
Next追问谢谢,可与我的想法不一样,后面4个text不排序,只是和前面的对应谁最大就显示1,次大显示2.。。。追答本来也不是对右面的Text排序,只是显示左侧对应Text中数值排在第几位的,将
If A(i) = Val(Text1(j).Text) Then Text2(j).Text = i + 1
改成:
If A(i) = Val(Text1(j).Text) Then Text2(j).Text = 4 - i
就可以实现你要的效果啦!你可以将以上代码放到一个按钮的Click事件中试试。
把Text设置成数组是因为可以简化代码而已,否则就要逐个赋值。
全部回答
Dim a() As Double '需要排序的数值
Dim b() As Double '排列顺序,设定数据已经是由大到小排序
Dim c As Double '需要排序的数值的数量
Dim d As Integer '排序方式,1-升序(最大的在最后),2-降序(最大的在最前)
Dim i, j As Integer
c = 4 '需要排序的数值的数量
d = 2 '排序方式,1-升序(最大的在最后),2-降序(最大的在最前)
ReDim a(c + 2)
ReDim b(c + 1)
a(1) = CDbl(Text1.Text)
a(2) = CDbl(Text2.Text)
a(3) = CDbl(Text3.Text)
a(4) = CDbl(Text4.Text)
For i = 1 To c
b(i) = i
Next i

For j = 1 To c - 1 '大小顺序号
For i = j + 1 To c
Select Case a(j)
Case Is > a(i)
If d = 2 Then '降序
If j > i Then
a(c + 1) = b(i)
b(i) = b(j)
b(j) = a(c + 1)
End If
End If
If d = 1 Then '升序
If j < i Then
a(c + 1) = b(i)
b(i) = b(j)
b(j) = a(c + 1)
End If
End If
Case Is < a(i)
If d = 2 Then '降序
If j < i Then
a(c + 1) = b(i)
b(i) = b(j)
b(j) = a(c + 1)
End If
End If
If d = 1 Then '升序
If j > i Then
a(c + 1) = b(i)
b(i) = b(j)
b(j) = a(c + 1)
End If
End If
End Select
Next i
Next j

For j = 1 To c - 1 '数值排列
For i = j + 1 To c
Select Case a(j)
Case Is > a(i)
If d = 2 Then '降序
If j > i Then
a(c + 1) = a(i)
a(i) = a(j)
a(j) = a(c + 1)
End If
End If
If d = 1 Then '升序
If j < i Then
a(c + 1) = a(i)
a(i) = a(j)
a(j) = a(c + 1)
End If
End If
Case Is < a(i)
If d = 2 Then '降序
If j < i Then
a(c + 1) = a(i)
a(i) = a(j)
a(j) = a(c + 1)
End If
End If
If d = 1 Then '升序
If j > i Then
a(c + 1) = a(i)
a(i) = a(j)
a(j) = a(c + 1)
End If
End If
End Select
Next i
Next j

Text5.Text = b(1) '显示大小序号
Text6.Text = b(2)
Text7.Text = b(3)
Text8.Text = b(4)
'Text5.Text = a(1) '显示排序后的数值
'Text6.Text = a(2)
'Text7.Text = a(3)
'Text8.Text = a(4)
如果不需要数值排列,那么数值排列那段可以删掉追问

我试了一下,中间还出现大小不符,有点不对,什么原因,我看不出来。上面本来123最大,应该是1,结果是2,

追答

由于上述代码测试不够(年底事太多),导致代码运行结果错误,给大家带来的不便,敬请谅解!

本来想贴代码上来,但是代码较多,超过最大限制,所以截图给大家!

这段代码在数值排序时没有问题,但是在大小顺序号排列时,如果有大小相同的数值时,序号排列不正确,仅供参考!

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
AGE20 s_爱纪二十之有什么知名的化妆品
烽火战国声望600以后怎么才加的快11
我下的巫师3缺少vcom110怎么解决啊?
250ml溶液中,含有葡萄糖12.5g, NaCl 2.25g
南平御景国际酒店地址好找么,我有些事要过去
八字中什么叫直接克制
500克盐现在多少钱
青相馆在什么地方啊,我要过去处理事情
今天第三次去办理个人及家庭成员查询名下现有
钢结构-300*18/650的含义
有一种摆件小玩意,是几颗珠子,左边右边来回
食品安全法中胀袋变质的食物如何规定的?
(关于睡眠) 假如天天在家清闲,不去工作,不
妖魔鬼怪更难镇还是龙更难抗呢
怎么正确咀嚼食物
推荐资讯
二手佳能255F复印机多少一台?
河南地区哪里有酥梨
女声比较童音的唱什么歌好?(除童歌)求推荐
苹果6S乐视电视投屏到电视上就一直显示“正在
大家都用什么胶水粘鞋子
大金中央空调的4MX,PMX,LMX,VRV各自的优缺点
这是什么东西 在家的墙上发现的
求桜桃喵写真的电子版
东久花园城停车场这个地址在什么地方,我要处
“夕”字的偏旁是什么?
我在2345贷款王上绑定的银行卡不见了,怎样还
请教摄友35 50 85定焦的问题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?