VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)

---


'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  自定义学生对象
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Type STUDENT_INFO
    '学号
    stuNo As String
    stuName As String
    stuAge As String
    stuSexCode As String
End Type


'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  定义各种数据类型,处理学生对象情报
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Sub getStudentInfo()
    
    ' 从Excel的Sheet页中取得情报 例子
    ' Dim sheet As Worksheet
    ' Set sheet = Worksheets("testSheetName")
    ' cellValue = sheet.Cells(2, 3) '2C 单元格 "1001,张三,30,1、1002,李四,31,1、1003,XiaoHong,29,2"
    ' MsgBox cellValue
    

    ' 全部学生信息 以字符串形式保存
    Dim allStudentInfo As String
    allStudentInfo = "1001,张三,30,1、1002,李四,31,1、1003,XiaoHong,29,2"
    
    ' 全部学生信息 以数组形式保存【数组使用】
    Dim studentInfoList() As String
    studentInfoList = Split(allStudentInfo, "、")
    
    ' 全部学生姓名信息 以key-学号  value-姓名 的Map形式保存
    Dim studentDataList As Object '【数据字典使用-定义】
    Set studentDataList = CreateObject("Scripting.Dictionary")
    
    ' UBound 返回数组的上界
    For i = 0 To UBound(studentInfoList)
    
        ' 循环设定每个学生的信息
        Dim stuObject As STUDENT_INFO '【自定义数据类型使用】
        stuObject = setStudentInfo(studentInfoList(i))
        
        
        ' 以学号作为Key,存储上面设定好的学生的信息
        ' studentDataList.Add stuObject.stuNo, stuObject  '不好用,无法保存自定义对象
        studentDataList.Add stuObject.stuNo, stuObject.stuName '【数据字典使用 - 设定值】
        
    Next
    
    ' 显示学号是「1002」小明同学的信息
    If studentDataList.exists("1002") Then '【数据字典使用 - 取值】
        MsgBox studentDataList.Item("1002") '【数据字典使用 - 取值】
    End If
        
End Sub

'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
'*
'*  设定单个学生对象情报
'*  做成时间:2020/01/20
'*  做成者: sun
'*  跟新日:
'*  更新者:
'*
'* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Public Function setStudentInfo(studentInfo As String) As STUDENT_INFO
    ' 单个学生的信息
    Dim infos() As String
    infos = Split(studentInfo, ",")
    
    ' 使用上面定义的学生对象
    Dim stuObject As STUDENT_INFO
    stuObject.stuNo = infos(0)
    stuObject.stuName = infos(1)
    stuObject.stuAge = infos(2)
    stuObject.stuSexCode = infos(3)
    
    ' 设定返回值
    setStudentInfo = stuObject
    
End Function


 

----

 

VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典)VBA中 各种数据类型的使用(自定义数据类型Type,数组,数据字典) sun0322 发布了454 篇原创文章 · 获赞 45 · 访问量 145万+ 他的留言板 关注
上一篇:HDOJ 1002 A + B Problem II


下一篇:1002. Find Common Characters