请教:我想对text1中的数字进行从小到大排序,用vb怎样写?

来自:    更新日期:早些时候
VB程序设计,将一个TEXT文本框内的数据从小到大排列!~

文本框内的数据是什么格式的,如12,3,4,23,543,345
思路:用split函数将字符串转变为独立的数字,如a=split(text1.text,",")
编写一个数字排序的函数
将结果重新组合为字符串,并返回给text1.text
难点是数字排序函数,这里面有不同的算法。

如果不考虑编程的方法,可以通过电子表格来实现:
将你上面的数字复制到记事本中,然后用替换功能将所有的x替换为“,”(英文的逗号,不包括双引号)。然后保存,默认的扩展名名是“txt”,改为“csv”。然后打开,应该变为电子表格了。电子表格的A列,B列应该是你上面的数据,现在在第一行的C列输入公式:“=A*B”回车,通过鼠标拖拽功能,把第一行的C列的值复制到下面所有数据,这样就计算出来乘积了,然后选中C列,在单元格设置中将单元格选为数值,然后还是选中C列,用电子表格的排序功能排序,完成。
200 300 60000
200 400 80000
200 500 100000
200 600 120000
200 750 150000
250 700 175000
300 600 180000
250 800 200000
300 700 210000
300 750 225000
250 1100 275000
400 700 280000
400 750 300000
400 800 320000
400 900 360000
400 900 360000
400 1000 400000
600 700 420000
400 1100 440000
400 1150 460000
400 1200 480000
700 700 490000
400 1300 520000
700 900 630000

这里有两种方法。第一种,直接交换,代码比较多,容易出错。
第二种,把交换部分写成一个独立过程,中间调用。便于阅读,书写方便,不易出错。
用户的关于从大到小和从小到大排序选择,使用Option控件()如图。
Private Sub Command1_Click() Dim a As Integer Dim b As Integer Dim c As Integer Dim tmp As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If Option1.Value = True Then If a a Then tmp = b b = c c = tmp tmp = a a = b b = tmp ElseIf c > b Then tmp = b b = c c = tmp End If Else If a > b Then tmp = a a = b b = tmp End If If c < a Then tmp = b b = c c = tmp tmp = a a = b b = tmp ElseIf c < b Then tmp = b b = c c = tmp End If End If Text1.Text = CStr(a) Text2.Text = CStr(b) Text3.Text = CStr(c) End Sub
Sub swap(x, y) Dim tmp tmp = x x = y y = tmpEnd Sub
Private Sub Command2_Click() Dim a As Integer Dim b As Integer Dim c As Integer Dim tmp As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If Option1.Value = True Then If a a Then swap b, c swap a, b ElseIf c > b Then swap b, c End If Else If a > b Then swap a, b End If If c < a Then swap b, c swap a, b ElseIf c < b Then swap b, c End If End If Text1.Text = CStr(a) Text2.Text = CStr(b) Text3.Text = CStr(c) End Sub


再添加一个按钮command2
Private Sub Command2_Click()
dim a$(),i%,j%,n%
a=split(text1," ")
n=ubound(a)
for i=0 to n-1
for j=i+1 to n
if a(i)>a(j) then t=a(i):a(i)=a(j):a(j)=t
next j
next i
text1=""
for i=0 to n
text1=text1 & a(i) & " "
next i
end sub

你把要求写明白点,看不懂你的代码。。。。


请教:我想对text1中的数字进行从小到大排序,用vb怎样写?视频

相关评论:
  • 13747298944请教:我想对text1中的数字进行从小到大排序,用vb怎样写?
    艾冠丹再添加一个按钮command2 Private Sub Command2_Click()dim a$(),i%,j%,n a=split(text1," ")n=ubound(a)for i=0 to n-1 for j=i+1 to n if a(i)>a(j) then t=a(i):a(i)=a(j):a(j)=t next j next i text1=""for i=0 to n text1=text1 & a(i) & " ...

  • 13747298944各位大侠,我要把TEXT1中的"湘A12345"中的汉字,字母,数字分别提取出来...
    艾冠丹text2=left(text1,1)text3=mid(text1,2,1)text4=mid(text1,3,5)方法2:dim b as string For i = 1 To Len(text1)b = Mid(text1, i, 1)If IsNumeric(b) Then Text4 = Text4 & b ElseIf b <= "z" And b >= "a" Or b <= "Z" And b >= "A" Then Text3 = ...

  • 13747298944vb中怎么可以把text1(0)里面的数字跟text1(1)的数字一键对调
    艾冠丹完整代码如下:Private Sub Command1_Click()Dim s As String s = Text1(0).Text Text1(0).Text = Text1(1).Text Text1(1).Text = s End Sub

  • 13747298944text1里的十个数用逗号隔开,我怎么把它们取出来转换成数值型来排序啊...
    艾冠丹Dim s() As String, n() As Long, i As Integer s = Split(Text1.Text, ",")ReDim n(UBound(s))For i = 0 To UBound(s)n(i) = Val(s(i))Next i '这时候数组n就是转换后的数值型数组,你对它进行排序即可

  • 13747298944text1.text 如何用&对text1中的1 代换
    艾冠丹text1.text=replace(text1.text,"1","&")

  • 13747298944求在VB的text1中找出相同的数,并在text2中显示出来一个数就行
    艾冠丹楼上那个不行,如过数据是 1 12 123 2 22 22 就会出错 今天想了很就 终于弄出来了 100%你的要求 ,Private Sub Command1_Click()Dim a1() As String Dim t, b, c As String Dim a2() As Boolean a1 = Split(Text1.Text, " ")ReDim a2(UBound(a1)) As Boolean For i = 0 To...

  • 13747298944我想通过Text1.text 输入一个数值,然后对这个值进行数据库查询,并且赋 ...
    艾冠丹Adodc1.Recordset.Find “ID=” & val(text1.text)你写的代码意思是找ID=text1.text 的行,ID是整数,你让它等于字符窜,肯定出错啊

  • 13747298944vb编程 :统计文本框text1中大写字母的个数。
    艾冠丹Dim n As Integer n = 0 Dim str As String For i = 1 To Len(Text1)str = Mid(Text1, i, 1)If str <= "Z" And str >= "A" Then n = n + 1 Next Print n

  • 13747298944有没有直接运用text1数据的编写方法
    艾冠丹你的这个代码是把数据放到C:\\1.txt这个文件里了,读取的是这个文件里的数据,而不是读取窗体中Text1中的数据 '设置Text1的MultiLine属性为True '以下代码测试通过 Private Sub Command1_Click()Dim a() As String a = Split(Text1.Text, vbCrLf)For i = 1 To 33 For j = 0 To UBound(a...

  • 13747298944新手学VB 我想问下 当我在Text中输入一个数字 怎样让它转到一个定义变量...
    艾冠丹在Text控件 Text1 的消息响应函数Text1_Change()里写下 1)a =Text1 2)a =Text1.text 3)a= int(Text1.text)4)a= CInt(Text1.text)5)a= CLng(Text1.text)6)a= CSng(Text1.text)7)a= CDbl(Text1.text)任选一个就可以了

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网