VB数组和自定义类型
高等教育出版社的VBP273第8题:窗体上建立一个简单的组合框,在组合框的文本框输入数字字符,按回车键后加入到组合框的列表框内;单机交换按钮,将列表框中最小值项目和第0个...
高等教育出版社的VB P273第8题:窗体上建立一个简单的组合框,在组合框的文本框输入数字字符,按回车键后加入到组合框的列表框内;单机交换按钮,将列表框中最小值项目和第0个项目交换,最大值项目与最后项目交换
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 13
Case Else
KeyAscii = 0
End Select
If KeyAscii = 13 Then
Combo1.AddItem Combo1.Text
Combo1.Text = ""
End If
End Sub
Private Sub Command1_Click()
Dim a() As Integer, min%, max%, imin%, imax%, t%, i%, j&, k%
min = Val(Combo1.List(0))
max = Val(Combo1.List(Combo1.ListCount - 1))
imin = 0
imax = Combo1.ListCount - 1
For i = 0 To Combo1.ListCount - 1
ReDim a(i)
a(i) = Val(Combo1.List(i))
Next i
For j = 1 To Combo1.ListCount - 1
If a(j) < min Then
min = a(j): imin = j
End If
t = Val(Combo1.List(0))
Combo1.List(0) = Val(Combo1.List(imin))
Combo1.List(imin) = t
Next j
For k = 0 To Combo1.ListCount - 1
If a(k) > max Then
max = a(k): imax = k
End If
t = Val(Combo1.List(Combo1.ListCount - 1))
Combo1.List(Combo1.ListCount - 1) = Val(Combo1.List(imax))
Combo1.List(imax) = t
Next k
开始的输入语句没错,但是后面的交换就不行了,求大神指点 展开
Private Sub Combo1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 13
Case Else
KeyAscii = 0
End Select
If KeyAscii = 13 Then
Combo1.AddItem Combo1.Text
Combo1.Text = ""
End If
End Sub
Private Sub Command1_Click()
Dim a() As Integer, min%, max%, imin%, imax%, t%, i%, j&, k%
min = Val(Combo1.List(0))
max = Val(Combo1.List(Combo1.ListCount - 1))
imin = 0
imax = Combo1.ListCount - 1
For i = 0 To Combo1.ListCount - 1
ReDim a(i)
a(i) = Val(Combo1.List(i))
Next i
For j = 1 To Combo1.ListCount - 1
If a(j) < min Then
min = a(j): imin = j
End If
t = Val(Combo1.List(0))
Combo1.List(0) = Val(Combo1.List(imin))
Combo1.List(imin) = t
Next j
For k = 0 To Combo1.ListCount - 1
If a(k) > max Then
max = a(k): imax = k
End If
t = Val(Combo1.List(Combo1.ListCount - 1))
Combo1.List(Combo1.ListCount - 1) = Val(Combo1.List(imax))
Combo1.List(imax) = t
Next k
开始的输入语句没错,但是后面的交换就不行了,求大神指点 展开
2个回答
展开全部
1 说明: 在程序中使用自定义的数据类型时,一定要先声明,如你这个程序中的结构studType,一定要放在代码页的最开始的位置,然后是代码页内的局部变量,然后是自己的函数和过程,因此,你上边的程序代码应该按如下次序放置
第一部分:用户定义的数据类型
Private Type studtype
name As String * 5
sex As String * 1
number As Long
department As String * 10
End Type
第二部分:局部公共变量声明
Dim stud(99) As studType
Dim n%
第三部分:各个过程和和函数
Private Sub Command1_Click()
.
.
end sub
Private Sub Command2_Click()
.
.
end sub
Private Sub Command3_Click()
.
.
end sub
对于问题补充中的修改的问题并不重要,只要你前后保持一致就可以了,你也可以试着去改变一下里边的数据类型,以及成员变量的个数.
2 程序中的问题:
1 变量n在使用前未被初始化(从你的那3个按钮事件中未发现有该语句)
2 你定义的数组数是100个,而对n(按钮1中)的比较,超过70就认为超过数组声明个数?
第一部分:用户定义的数据类型
Private Type studtype
name As String * 5
sex As String * 1
number As Long
department As String * 10
End Type
第二部分:局部公共变量声明
Dim stud(99) As studType
Dim n%
第三部分:各个过程和和函数
Private Sub Command1_Click()
.
.
end sub
Private Sub Command2_Click()
.
.
end sub
Private Sub Command3_Click()
.
.
end sub
对于问题补充中的修改的问题并不重要,只要你前后保持一致就可以了,你也可以试着去改变一下里边的数据类型,以及成员变量的个数.
2 程序中的问题:
1 变量n在使用前未被初始化(从你的那3个按钮事件中未发现有该语句)
2 你定义的数组数是100个,而对n(按钮1中)的比较,超过70就认为超过数组声明个数?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Combo1_KeyPress(KeyAscii As Integer)
KeyAscii = IIf(KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 13, KeyAscii, 0)
If KeyAscii = 13 Then Combo1.AddItem Combo1.Text: Combo1.Text = ""
End Sub
Private Sub Command1_Click()
Dim m%, im%, t%, i%, j%
j = Combo1.ListCount - 1
im = 0: m = Val(Combo1.List(im))
For i = 1 To j
t = Val(Combo1.List(i)): If t < m Then m = t: im = i
Next
Combo1.List(im) = Combo1.List(0): Combo1.List(0) = Trim(str(m))
im = j: m = Val(Combo1.List(im))
For i = 1 To j - 1
t = Val(Combo1.List(i)): If t > m Then m = t: im = i
Next
Combo1.List(im) = Combo1.List(j): Combo1.List(j) = Trim(str(m))
End Sub
KeyAscii = IIf(KeyAscii > 47 And KeyAscii < 58 Or KeyAscii = 13, KeyAscii, 0)
If KeyAscii = 13 Then Combo1.AddItem Combo1.Text: Combo1.Text = ""
End Sub
Private Sub Command1_Click()
Dim m%, im%, t%, i%, j%
j = Combo1.ListCount - 1
im = 0: m = Val(Combo1.List(im))
For i = 1 To j
t = Val(Combo1.List(i)): If t < m Then m = t: im = i
Next
Combo1.List(im) = Combo1.List(0): Combo1.List(0) = Trim(str(m))
im = j: m = Val(Combo1.List(im))
For i = 1 To j - 1
t = Val(Combo1.List(i)): If t > m Then m = t: im = i
Next
Combo1.List(im) = Combo1.List(j): Combo1.List(j) = Trim(str(m))
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询