【VB题】使用自定义数据类型和动态数组实现:用户在文本框中输入,单击添加按钮,在右面的列表框中显示

使用自定义数据类型和动态数组实现如下功能:用户在文本框中输入学生的学号、姓名、所属系和年龄,单击添加按钮,在右面的列表框中显示出来【求问我的代码哪里错了TUT】明明用了r... 使用自定义数据类型和动态数组实现如下功能:用户在文本框中输入学生的学号、姓名、所属系和年龄,单击添加按钮,在右面的列表框中显示出来

【求问我的代码哪里错了TUT】明明用了redim preserve 为什么修改数组大小之后数据还是无法保留。希望能第一次输入的数据储存在a(1),第二次储存在a(2)

Private Type List ‘自定义数组
name As String
number As Integer
department As String
age As Integer
End Type

Private Sub Command1_Click()
Dim n%, i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)

List1.AddItem a(i).number & Space(6) & a(i).name & Space(6) & a(i).department & Space(7) & a(i).age

End Sub
展开
 我来答
pivotstar
推荐于2016-05-22 · TA获得超过471个赞
知道小有建树答主
回答量:444
采纳率:33%
帮助的人:495万
展开全部
Private Type UsrList ‘自定义数组(格式)
name As String
number As Integer
department As String
age As Integer
End Type
Dim Lst() as UsrLst '定义一个(数组)变量,代表自定义的Type格式

Private Sub Form_Load()
ReDim Lst(0) '这一组可以不用,也可以使用,关系到后续代码的数组Lbound运算
End Sub

Private Sub Command1_Click()
Dim n%, i%
i = UBound(Lst) + 1 '如果没有预置ReDim Lst(0) ,UBound(Lst)会提示出错
ReDim Preserve Lst(i)
Lst(i).number = int(Val(Text1.Text))
Lst(i).name = Cstr(Text2.Text)
Lst(i).department = Cstr(Text3.Text)
Lst(i).age = int(Val(Text4.Text))

List1.AddItem Lst(i).number & Space(6) & Lst(i).name & Space(6) & Lst(i).department & Space(7) & Lst(i).age

End Sub
追问
Dim Lst() as UsrLst 用户定义类型未定义?
追答
Dim Lst() as UsrList
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑年1977
2014-04-12 · TA获得超过7.2万个赞
知道大有可为答主
回答量:2.2万
采纳率:81%
帮助的人:1.2亿
展开全部
关键你把i%定义在Command1_Click() 过程内
因为i%是局部变量,你每次点Command1_Click时,i都是从0开始的。
所以 i%定义为全局变量或静态变量,让i能够保存上次的值,
这样达到保存前面的值了
第一种
Dim i%
Private Sub Command1_Click()
Dim n%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)

第二种
Private Sub Command1_Click()
Dim n%
Static i%
i = i + 1
Dim a() As List
ReDim Preserve a(1 To i)
a(i).number = Val(Text1.Text)
a(i).name = Text2.Text
a(i).department = Text3.Text
a(i).age = Val(Text4.Text)
追问
两种都是第二次输入之后a(1)永远是0?
追答
关键是看Text1.Text的内容了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fyyunfei
2014-04-12 · TA获得超过144个赞
知道答主
回答量:147
采纳率:100%
帮助的人:75.4万
展开全部
建议你去学数据库,比这个方法要好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式