【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 展开
【求问我的代码哪里错了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 展开
3个回答
展开全部
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
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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键你把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)
因为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的内容了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议你去学数据库,比这个方法要好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询