在vb中,有8个text框每列4个,左面四个添加数值,右面四个自动显示大小序号
答案:2 悬赏:10 手机版
解决时间 2021-11-26 15:25
- 提问者网友:嘚啵嘚啵
- 2021-11-26 11:44
在vb中,有8个text框每列4个,左面四个添加数值,右面四个自动显示大小序号
最佳答案
- 五星知识达人网友:封刀令
- 2021-11-26 13:18
将左右两列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(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设置成数组是因为可以简化代码而已,否则就要逐个赋值。
全部回答
- 1楼网友:孤独的牧羊人
- 2021-11-26 14:15
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)
如果不需要数值排列,那么数值排列那段可以删掉追问
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,
由于上述代码测试不够(年底事太多),导致代码运行结果错误,给大家带来的不便,敬请谅解!
本来想贴代码上来,但是代码较多,超过最大限制,所以截图给大家!
这段代码在数值排序时没有问题,但是在大小顺序号排列时,如果有大小相同的数值时,序号排列不正确,仅供参考!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯