一道VB自定义类型数组的应用题~ 高人帮忙找一下错误!

在标准模块一个职工数据类型,包括职工号、姓名、工资三项内容。在窗体的通用声明处声明一个职工类型的数组clerk,该数组可以存放10个职工的数据。
在窗体中设计3个标签、3 个文本框、2个命令按钮和一个图片框。在文本框中分别输入职工号、姓名、工资;当单击“新增”按钮时,可以将文本框中输入的内容添加到数组的当前元素中;当单击“排序”按钮时,将输入的内容按工资递减的顺序排列、并在图片框显示。
程序老是说我写的代码未定义 那位高人帮一下 ~~

Type studType
gh As Long
xm As String * 5
zg As Long

End Type

Dim a() As zg, i%

Private Sub Form_Load()

Dim n%
n = InputBox("输入人数")
ReDim a(1 To n)
i = 0

End Sub

Private Sub Command1_Click()
i = i + 1
If i > n Then MsgBox ("人数超出"): Exit Sub
With a(i)
.gh = Val(Text1)
.xm = Text2
.zg = Val(Text3)
End With
Text1 = "": Text2 "": Text3 = ""
End Sub

Private Sub Command2_Click()

Dim j%, k%, t As zg
For j = 1 To i - 1
For k = j + 1 To i
If a(k).zg > a(k - 1).zg Then
t = a(k)
a(k) = a(k - 1)
a(k - 1) = t
End If
Next k
Next j
For j = 1 To i
Picture.Print a(j).gh; a(j).xm; a(j).zg
Next j

End Sub

你的程序问题比较多,第一:Dim a() As zg, i%,应该改为Dim a() As studType, i%,因为你studType是定义过的,zg是没定义过的类型。
第二:Text1 = "": Text2 "": Text3 = ""这行改为Text1 = "": Text2 = "": Text3 = ""
第三:If i > n Then MsgBox ("人数超出"): Exit Sub这里的n永远是空,即i永远大于n,下面过程不能进行
…………
你command2的过程是不是要对这些输入的数据按zg排序呢?
改过的程序如下
Private Type studType
gh As Long
xm As String * 5
zg As Long
End Type
Dim a() As studType, i%, n%

Private Sub Form_Load()
n = InputBox("输入人数")
ReDim a(1 To n)
i = 0
End Sub

Private Sub Command1_Click()
If i >= n Then MsgBox ("人数超出"): Exit Sub
i = i + 1
With a(i)
.gh = Val(Text1)
.xm = Text2
.zg = Val(Text3)
End With
Text1 = "": Text2 = "": Text3 = ""
End Sub

Private Sub Command2_Click()
Dim j%, k%, t As studType, min As studType
For j = 1 To i - 1
min = a(j)
For k = j + 1 To i
If min.zg < a(k).zg Then
t = a(k)
a(k) = min
min = t
End If
Next k
a(j) = min
Next j
For j = 1 To i
Picture1.Print a(j).gh; a(j).xm; a(j).zg
Next j
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-04-27
职工类型没定义吗?哪你在定义职工数组的时候也在公共模块里面定义吧,定义成PUBLIC的。我怀疑这个地方出问题了。你打断点啊。。
第2个回答  2010-04-27
Type studType
gh As Long
xm As String * 5
zg As Long

End Type

Dim a() As zg, i%
zg类呢?感觉应该是 Dim a() as StudType吧,你把这里改改试试,好久没有用VB了
相似回答