<

Function func学部一覧配列作成()

'Public PUB_ary学部等一覧() As type専攻
Set sheet学部 = ThisWorkbook.Sheets("学部学科専攻new")
Dim hajR, owaR

Dim ary学部番号()
Dim ary学部CODE()
Dim ary学部名()
Dim ary学科番号()
Dim ary学科CODE()
Dim ary学科名()
Dim ary専攻番号()
Dim ary専攻CODE()
Dim ary専攻名()
Dim ary質問CODE()

c学部番号 = 2
c学部CODE = 3
c学部名 = 4
c学科番号 = 5
c学科CODE = 6
c学科名 = 7
c専攻番号 = 8
c専攻CODE = 9
c専攻名 = 10
c質問CODE = 11

'表の最後の行
hajR = 6

r = hajR
With sheet学部
    While CStr(.Cells(r + 1, c学部番号)) & _
CStr(.Cells(r + 1, c学部CODE)) & _
CStr(.Cells(r + 1, c学部名)) & _
CStr(.Cells(r + 1, c学科番号)) & _
CStr(.Cells(r + 1, c学科CODE)) & _
CStr(.Cells(r + 1, c学科名)) & _
CStr(.Cells(r + 1, c専攻番号)) & _
CStr(.Cells(r + 1, c専攻CODE)) & _
CStr(.Cells(r + 1, c専攻名)) & _
CStr(.Cells(r + 1, c質問CODE)) > ""

    r = r + 1
Wend
owaR = r

'番号の最大値

max学部番号 = -1
max学科番号 = -1
max専攻番号 = -1

For r = hajR To owaR
    i = r - hajR
    '--------------------
    dmy = .Cells(r, c学部番号)
    If dmy = "" Then
        dmy = -1
    End If
    If max学部番号 < dmy Then
        max学部番号 = dmy
    End If
    '--------------------
     dmy = .Cells(r, c学科番号)
    If dmy = "" Then
        dmy = -1
    End If
    If max学科番号 < dmy Then
        max学科番号 = dmy
    End If
    '--------------------
     dmy = .Cells(r, c専攻番号)
    If dmy = "" Then
        dmy = -1
    End If
    If max専攻番号 < dmy Then
        max専攻番号 = dmy
    End If
    '--------------------

    ReDim Preserve ary学部番号(i)
    ReDim Preserve ary学部CODE(i)
    ReDim Preserve ary学部名(i)
    ReDim Preserve ary学科番号(i)
    ReDim Preserve ary学科CODE(i)
    ReDim Preserve ary学科名(i)
    ReDim Preserve ary専攻番号(i)
    ReDim Preserve ary専攻CODE(i)
    ReDim Preserve ary専攻名(i)
    ReDim Preserve ary質問CODE(i)

    ary学部番号(i) = .Cells(r, c学部番号)
    ary学部CODE(i) = .Cells(r, c学部CODE)
    ary学部名(i) = .Cells(r, c学部名)
    ary学科番号(i) = .Cells(r, c学科番号)
    ary学科CODE(i) = .Cells(r, c学科CODE)
    ary学科名(i) = .Cells(r, c学科名)
    ary専攻番号(i) = .Cells(r, c専攻番号)
    ary専攻CODE(i) = .Cells(r, c専攻CODE)
    ary専攻名(i) = .Cells(r, c専攻名)
    ary質問CODE(i) = .Cells(r, c質問CODE)
Next r

MsgBox CStr(max学部番号) & "/" & CStr(max学科番号) & "/" & CStr(max専攻番号)
ReDim Preserve PUB_ary学部等一覧(max学部番号, max学科番号, max専攻番号)

For r = hajR To owaR
    i = r - hajR
    
    If i = 0 Then
        If ary学部番号(i) = "" Or ary学部CODE(i) = "" Or ary学部名(i) = "" Then
            MsgBox "学部情報不正"
            Exit Function
        End If
        
    End If
    
    If ary学部番号(i) = "" Then
        ary学部番号(i) = ary学部番号(i - 1)
    End If
    
    If ary学部CODE(i) = "" Then
        ary学部CODE(i) = ary学部CODE(i - 1)
    End If
    
    If ary学部名(i) = "" Then
        ary学部名(i) = ary学部名(i - 1)
    End If
    If ary学科番号(i) = "" And (ary学部番号(i) = ary学部番号(i - 1)) Then
        ary学科番号(i) = ary学科番号(i - 1)
    End If
    If ary学科CODE(i) = "" And (ary学部番号(i) = ary学部番号(i - 1)) Then
        ary学科CODE(i) = ary学科CODE(i - 1)
    End If
    If ary学科名(i) = "" And (ary学部番号(i) = ary学部番号(i - 1)) Then
        ary学科名(i) = ary学科名(i - 1)
    End If
    
    
    Debug.Print i, ary学部番号(i), ary学部CODE(i), ary学部名(i)
    Debug.Print i, ary学科番号(i), ary学科CODE(i), ary学科名(i)
    Debug.Print i, ary専攻番号(i), ary専攻CODE(i), ary専攻名(i), ary質問CODE(i)
    Debug.Print "---------------------"
    
Next r
 End With
    
    
    
    r開始 = sheet学部.Range("学部番号").Row + 1
    r = r開始: chk = "A"
    While chk <> ""
        chk = sheet学部.Cells(r, c学部CODE) & sheet学部.Cells(r, c学科CODE) & sheet学部.Cells(r, c専攻CODE)
        r = r + 1
    Wend
    r終了 = r - 2
    
    If MODE = 1 Then
        GoSub 学部表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
     End If
    
    If MODE = 2 Then
        GoSub 学科表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
    End If
    
    If MODE = 3 Then
        GoSub 専攻表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
    
    
    End If



Exit Function
'==================================================
学部表:
'==================================================
my学部CODE = ""
i = 0
For r = r開始 To r終了
    If sheet学部.Cells(r, c学部CODE) <> my学部CODE Then
        ReDim Preserve PUB_aryコンボ(i)
        PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c学部番号)
        PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c学部CODE)
        PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c学部名)
        PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
        my学部CODE = PUB_aryコンボ(i).CODE
        i = i + 1
    End If
Next r
    
Return

'==================================================
学科表:
'==================================================
my学科CODE = ""
i = 0

For r = r開始 To r終了
    If sheet学部.Cells(r, c学部CODE) = from学部CODE Then '指定学部コードなら作業
        If sheet学部.Cells(r, c学科CODE) <> my学科CODE Then
   
            ReDim Preserve PUB_aryコンボ(i)
            PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c学科番号)
            PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c学科CODE)
            PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c学科名)
            PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
            my学科CODE = PUB_aryコンボ(i).CODE
            i = i + 1
        End If
    End If
Next r
Return

'==================================================
専攻表:
'==================================================
i = 0

For r = r開始 To r終了
    
    If (sheet学部.Cells(r, c学部CODE) = from学部CODE) And _
         (Str(sheet学部.Cells(r, c学科CODE)) = Str(from学科CODE)) Then
   
            ReDim Preserve PUB_aryコンボ(i)
            PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c専攻番号)
            PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c専攻CODE)
            PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c専攻名)
            PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
            i = i + 1
    End If
Next r
Return


End Function


--------------------------------------------------------
Public Type type学部
    学部番号 As Variant
    学部CODE As Variant
    学部名 As Variant
    質問CODE As Variant
    
End Type




Public Type type学科
    学部番号 As Variant
    学部CODE As Variant
    学部名 As Variant
    学科番号 As Variant
    学科CODE As Variant
    学科名 As Variant
    質問CODE As Variant
End Type

Public Type type専攻
    学部番号 As Variant
    学部CODE As Variant
    学部名 As Variant
    学科番号 As Variant
    学科CODE As Variant
    学科名 As Variant
    専攻番号 As Variant
    専攻CODE As Variant
    専攻名 As Variant
    質問CODE As Variant
End Type


Public Type typeコンボ
    番号 As Variant
    CODE As Variant
    名称 As Variant
    質問 As Variant
End Type

Public Pub_ary学部() As type学部
Public PUB_ary学科() As type学科
Public PUB_ary専攻() As type専攻
Public PUB_aryコンボ() As typeコンボ





'-----------------------------------------------------------------

Function func学部学科専門一覧(MODE, from学部CODE, from学科CODE) As Boolean

from学部CODE = Trim(from学部CODE)
from学科CODE = Trim(from学科CODE)
Set sheet学部 = ThisWorkbook.Sheets("学部学科専攻new")

'MODE 1=学部一覧, 2=学科 ,3=専攻
学部学科専門一覧 = False

    If MODE < 1 Or MODE > 3 Then
        func学部学科専門一覧 = False
        MsgBox "!"
        Exit Function
    End If

    c学部番号 = sheet学部.Range("学部番号").Column
    c学部CODE = sheet学部.Range("学部CODE").Column
    c学部名 = sheet学部.Range("学部名").Column
    
    c学科番号 = sheet学部.Range("学科番号").Column
    c学科CODE = sheet学部.Range("学科CODE").Column
    c学科名 = sheet学部.Range("学科名").Column
    
    c専攻番号 = sheet学部.Range("専攻番号").Column
    c専攻CODE = sheet学部.Range("専攻CODE").Column
    c専攻名 = sheet学部.Range("専攻名").Column
    
    c質問CODE = sheet学部.Range("質問CODE").Column
    
    sheet学部.Activate
    
    r開始 = sheet学部.Range("学部番号").Row + 1
    r = r開始: chk = "A"
    While chk <> ""
        chk = sheet学部.Cells(r, c学部CODE) & sheet学部.Cells(r, c学科CODE) & sheet学部.Cells(r, c専攻CODE)
        r = r + 1
    Wend
    r終了 = r - 2
    
    If MODE = 1 Then
        GoSub 学部表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
     End If
    
    If MODE = 2 Then
        GoSub 学科表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
    End If
    
    If MODE = 3 Then
        GoSub 専攻表
'        aaa = ""
'        For i = 0 To UBound(PUB_aryコンボ)
'            aaa = aaa & Str(i) & " " & PUB_aryコンボ(i).番号 & " " & PUB_aryコンボ(i).CODE & " " & PUB_aryコンボ(i).名称 & vbCrLf
'        Next i
'        MsgBox aaa
    
    
    End If


func学部学科専門一覧 = True
Exit Function
'==================================================
学部表:
'==================================================
my学部CODE = ""
i = 0
For r = r開始 To r終了
    If sheet学部.Cells(r, c学部CODE) <> my学部CODE Then
        ReDim Preserve PUB_aryコンボ(i)
        PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c学部番号)
        PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c学部CODE)
        PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c学部名)
        PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
        my学部CODE = PUB_aryコンボ(i).CODE
        i = i + 1
    End If
Next r
    
Return

'==================================================
学科表:
'==================================================
my学科CODE = ""
i = 0

For r = r開始 To r終了
    If sheet学部.Cells(r, c学部CODE) = from学部CODE Then '指定学部コードなら作業
        If sheet学部.Cells(r, c学科CODE) <> my学科CODE Then
   
            ReDim Preserve PUB_aryコンボ(i)
            PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c学科番号)
            PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c学科CODE)
            PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c学科名)
            PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
            my学科CODE = PUB_aryコンボ(i).CODE
            i = i + 1
        End If
    End If
Next r
Return

'==================================================
専攻表:
'==================================================
i = 0

For r = r開始 To r終了
    
    If (sheet学部.Cells(r, c学部CODE) = from学部CODE) And _
         (Str(sheet学部.Cells(r, c学科CODE)) = Str(from学科CODE)) Then
   
            ReDim Preserve PUB_aryコンボ(i)
            PUB_aryコンボ(i).番号 = sheet学部.Cells(r, c専攻番号)
            PUB_aryコンボ(i).CODE = sheet学部.Cells(r, c専攻CODE)
            PUB_aryコンボ(i).名称 = sheet学部.Cells(r, c専攻名)
            PUB_aryコンボ(i).質問 = sheet学部.Cells(r, c質問CODE)
            i = i + 1
    End If
Next r
Return


End Function
*************************************************************************************



'学部コンボボックス設定

Private Sub cmd1_Click()

    ComboBox1.Clear
    'コンボボックスを3列にする
    ComboBox1.ColumnCount = 3
    '3列目を選択された値にする(C学部)
    ComboBox1.TextColumn = 3
    'それぞれの列幅を指定
    ComboBox1.ColumnWidths = "0;0;60"
    
    '項目の追加
    ComboBox1.AddItem
    ComboBox1.List(0, 0) = 0
    ComboBox1.List(0, 1) = "ALL"
    ComboBox1.List(0, 2) = "全て"


    MODE = 1
    学部CODE = 0
    学科ODE = 0

    '学部一覧を作る
    ret = func学部学科専門一覧(MODE, 学部CODE, 学科CODE)
    If ret = True Then
    
        For i = 0 To UBound(PUB_aryコンボ)
           ComboBox1.AddItem
            ComboBox1.List(i + 1, 0) = PUB_aryコンボ(i).番号
            ComboBox1.List(i + 1, 1) = PUB_aryコンボ(i).CODE
            ComboBox1.List(i + 1, 2) = PUB_aryコンボ(i).名称
        Next i
    
    End If
    ComboBox1.ListIndex = 0

End Sub

Private Sub cmd2_Click()
    'つくりゅボタン
    chk学部 = Me.CheckBox1
    chk学科 = Me.CheckBox2
    chk専攻 = Me.CheckBox3
    
    my学部CODE = Range("G21")
    my学科CODE = Range("G24")
    my専攻CODE = Range("G27")
    
    '-------------
    '学部を作る
    '-------------
    MODE = 1
    If my学部CODE = "ALL" Then
        学部CODE = ""
    Else
        学科CODE = my学部CODE   '←これで作れるように !
    End If
    
    ret = func学部学科専門一覧(MODE, 学部CODE, 学科CODE)
    For i = 0 To UBound(PUB_aryコンボ)
        ReDim Preserve Pub_ary学部(i)
        Pub_ary学部(i).学部番号 = PUB_aryコンボ(i).番号
        Pub_ary学部(i).学部CODE = PUB_aryコンボ(i).CODE
        Pub_ary学部(i).学部名 = PUB_aryコンボ(i).名称
        Pub_ary学部(i).質問CODE = PUB_aryコンボ(i).質問 '--------------------複数の時に
    Next i
    
    
    '学科を作る
    i = 0
    If my学科CODE <> "ALL" Then
        ReDim Preserve PUB_ary学科(i)
        ary学科(i) = my学科CODE
    Else    '全部
        MODE = 2
        For i = 0 To UBound(ary_学部)
             学部CODE = my学部CODE
        学科CODE = ""
        ret = func学部学科専門一覧(MODE, 学部CODE, 学科CODE)
        For i = 0 To UBound(PUB_aryコンボ)
            ReDim Preserve Pub_ary学部(i)
            Pub_ary学部(i).学部番号 = Pub_ary学部(i).学部番号
            Pub_ary学部(i).学部CODE = Pub_ary学部(i).学部CODE
            Pub_ary学部(i).学部名 = Pub_ary学部(i).学部名
            
            
            Pub_ary学部(i).学部番号 = PUB_aryコンボ(i).番号
            Pub_ary学部(i).学部CODE = PUB_aryコンボ(i).CODE
            Pub_ary学部(i).学部名 = PUB_aryコンボ(i).名称
            Pub_ary学部(i).質問CODE = PUB_aryコンボ(i).質問 '--------------------複数の時に
        Next i
    End If
    
    End If
        
            
            
                
    

End Sub

'学部コード変更→学科コードを変更する
Private Sub ComboBox1_Change()
    
    '選んだINDEX
    idx = Me.ComboBox1.ListIndex
    
    '選択失敗→終了
    If idx = -1 Then
        Exit Sub
    End If
        
    '選択した学部Combの値を控えておく
    Range("F21") = Me.ComboBox1.List(idx, 0)
    Range("G21") = Me.ComboBox1.List(idx, 1)
    Range("H21") = Me.ComboBox1.List(idx, 2)
    
    '学科Combのクリアと項目の追加
    
    ComboBox2.Clear
    'コンボボックスを3列にする
    ComboBox2.ColumnCount = 3
    '3列目を選択された値にする(AA学科)
    ComboBox2.TextColumn = 3
    'それぞれの列幅を指定
    ComboBox2.ColumnWidths = "0;0;60"

    '初期値
    ComboBox2.AddItem
    ComboBox2.List(0, 0) = 0
    ComboBox2.List(0, 1) = "ALL"
    ComboBox2.List(0, 2) = "全て"
    
    
    '選ばれた学部CODE
    学部CODE = Me.ComboBox1.List(idx, 1)
    
    '学部CODEがALLなら、学科CODEもALLのみで終わり
    If 学部CODE = "ALL" Then '全て
        Exit Sub
    End If
        
    '学科CODEを調べに行く
    学科ODE = 0
    MODE = 2
    If func学部学科専門一覧(MODE, 学部CODE, 学科CODE) Then  '成功
    
        '項目の追加
    
        For i = 0 To UBound(PUB_aryコンボ)
            ComboBox2.AddItem
            ComboBox2.List(i + 1, 0) = PUB_aryコンボ(i).番号
            ComboBox2.List(i + 1, 1) = PUB_aryコンボ(i).CODE
            ComboBox2.List(i + 1, 2) = PUB_aryコンボ(i).名称
        Next i

    End If

    ComboBox2.ListIndex = 0

End Sub

'学科コード変更→専攻コードを変更する
Private Sub ComboBox2_Change()
    
    '選んだINDEX
    idx = Me.ComboBox2.ListIndex
    
    '選択失敗→終了
    If idx = -1 Then
        Exit Sub
    End If

    '選択した学科Combの値を控えておく
    Range("F24") = Me.ComboBox2.List(idx, 0)
    Range("G24") = Me.ComboBox2.List(idx, 1)
    Range("H24") = Me.ComboBox2.List(idx, 2)
 
    '専攻Combのクリアと項目の追加
    ComboBox3.Clear
    'コンボボックスを3列にする
    ComboBox3.ColumnCount = 3
    '3列目を選択された値にする(AAコース)
    ComboBox3.TextColumn = 3
    'それぞれの列幅を指定
    ComboBox3.ColumnWidths = "0;0;60"
    
    '初期値
    ComboBox3.AddItem
    ComboBox3.List(0, 0) = 0
    ComboBox3.List(0, 1) = "ALL"
    ComboBox3.List(0, 2) = "全て"
    
    '選ばれた学科CODE
    学科CODE = Me.ComboBox2.List(idx, 1)
    
    '学科CODEがALLなら、専攻CODEもALLのみで終わり
    If 学科CODE = "ALL" Then '全て
        Exit Sub
    End If
    
    '専攻CODEを調べに行く
    MODE = 3
    学部CODE = Range("G21")
    学科CODE = Me.ComboBox2.List(idx, 1)
        
    If func学部学科専門一覧(MODE, 学部CODE, 学科CODE) Then
         For i = 0 To UBound(PUB_aryコンボ)
            ComboBox3.AddItem
            ComboBox3.List(i + 1, 0) = PUB_aryコンボ(i).番号
            ComboBox3.List(i + 1, 1) = PUB_aryコンボ(i).CODE
            ComboBox3.List(i + 1, 2) = PUB_aryコンボ(i).名称
        Next i
    End If
    ComboBox3.ListIndex = 0
End Sub

Private Sub ComboBox3_Change()


    '選んだINDEX
    idx = Me.ComboBox3.ListIndex
    
    '選択失敗→終了
    If idx = -1 Then
        Exit Sub
    End If
    '選択した学部Combの値を控えておく
        
    
    Range("F27") = Me.ComboBox3.List(idx, 0)
    Range("G27") = Me.ComboBox3.List(idx, 1)
    Range("H27") = Me.ComboBox3.List(idx, 2)
End Sub

*************************************************************************************














'----------------------------------
Private Sub CommandButton1_Click()
'----------------------------------

Dim myRange As Range
    Set myRange = Range("L4:O7")
    myRange.Copy
    
    Range("L10").PasteSpecial xlPasteAll



========================================================
Private Sub cmd1_Click()

    'コンボボックスを2列にする
    ComboBox1.ColumnCount = 2
    '2列目を選択された値にする
    ComboBox1.TextColumn = 2
    'それぞれの列幅を指定
    ComboBox1.ColumnWidths = "0;60"
    
    '項目の追加
    ComboBox1.Clear
    ComboBox1.AddItem
    ComboBox1.List(0, 0) = "UAA"
    ComboBox1.List(0, 1) = "A学部"
    ComboBox1.AddItem
    ComboBox1.List(1, 0) = "UBB"
    ComboBox1.List(1, 1) = "B学部"
    ComboBox1.AddItem
    ComboBox1.List(2, 0) = "UCC"
    ComboBox1.List(2, 1) = "C学部"
    ComboBox1.AddItem
'    ComboBox1.List(3, 0) = "2009年"
'    ComboBox1.List(3, 1) = "1月"
'    ComboBox1.AddItem
'    ComboBox1.List(4, 0) = "2009年"
'    ComboBox1.List(4, 1) = "2月"


End Sub

========================================================
Private Sub cmd2_Click()
MsgBox ComboBox1.Value
End Sub

========================================================
Private Sub ComboBox1_Change()

Dim myRange As Range
Dim aryBU() As type専攻

i = 0
r = 6

While Cells(r, 2) & Cells(r, 3) & Cells(r, 4) & Cells(r, 5) & Cells(r, 6) & Cells(r, 7) <> ""
    ReDim Preserve aryBU(i)
    
    aryBU(i).学部番号 = Cells(r, 2)
    aryBU(i).学部CODE = Cells(r, 3)
    aryBU(i).学部名 = Cells(r, 4)
    aryBU(i).学科番号 = Cells(r, 5)
    aryBU(i).学科CODE = Cells(r, 6)
    aryBU(i).学科名 = Cells(r, 7)
    aryBU(i).専攻番号 = Cells(r, 8)
    aryBU(i).専攻CODE = Cells(r, 9)
    aryBU(i).専攻名 = Cells(r, 10)
    r = r + 1
    i = i + 1
Wend
aaa = ""
For i = 0 To UBound(aryBU)
    aaa = aaa & Str(i) & " " & aryBU(i).学部番号 & " " & aryBU(i).学部CODE & " " & aryBU(i).学部名 & vbCrLf & _
    aryBU(i).学科番号 & " " & aryBU(i).学科CODE & " " & aryBU(i).学科名 & vbCrLf & _
    aryBU(i).専攻番号 & " " & aryBU(i).専攻CODE & " " & aryBU(i).専攻名 & vbCrLf & "------------" & vbCrLf
Next i

MsgBox aaa

'学部番号の補完
bak学部CODE = "9999"
bak学科CODE = "9999"

'もし学部番号が空白で、学科CODEが上と同じなら、学部コードを+
'もし学科〃
'もし専攻番号が???

For i = 0 To UBound(aryBU)
    If aryBU(i).学部CODE = back学部CODE Then
    
    
    aaa = aaa & Str(i) & " " & aryBU(i).学部番号 & " " & aryBU(i).学部CODE & " " & aryBU(i).学部名 & vbCrLf & _
    aryBU(i).学科番号 & " " & aryBU(i).学科CODE & " " & aryBU(i).学科名 & vbCrLf & _
    aryBU(i).専攻番号 & " " & aryBU(i).専攻CODE & " " & aryBU(i).専攻名 & vbCrLf & "------------" & vbCrLf
Next i

MsgBox aaa

End Sub
========================================================
プロパティのStyleを「2-fmStyleDropDownList」に設定すると、クリックしてキーボードからの入力はできなくなります。

ドロップダウンリストにはListFillRange「F2:F8」の内容が表示され、リストから選択するとLinkedCell「A3」に選択された値が表示されました。

リストに項目を追加するには AddItem メソッドを使用する方法と、RowSource プロパティにリスト項目が入力されたワークシートのセル範囲を指定する方法があります。AddItem メソッドで追加したリスト項目は Clear メソッドや RemoveItem メソッドで削除することが可能です。

cbo.AddItem [ Item ] [, Index ]
※上記構文中の cbo はコンボボックスオブジェクトのインスタンスを表します(以下、同様)。

引数名	省略	説明
Item	○	リスト項目に追加する文字列を指定します。 省略すると空白行が追加されます。
Index	○	新しい項目を挿入する位置を示す整数値を指定します。 位置は先頭項目がゼロとなります。 省略すると末尾に追加されます。



Clear メソッドはリストに追加された項目をすべて削除します。

構文
cbo.Clear   ※引数なし



選択項目のインデックス(ListIndex プロパティ)
コンボボックスのリスト内で現在選択されている項目のインデックスは ListIndex プロパティで取得可能です。リスト内の項目が選択されていない場合は -1 が返ってきます。

このプロパティは値を設定することも可能で、ゼロ以上の数値を設定するとそのインデックスに対応した項目がコンボボックス内に表示されます。-1 を設定すると未選択状態(コンボボックス内は空欄)になります。



'コンボボックスにリスト先頭項目を表示
ComboBox1.ListIndex = 0
'選択されている項目のインデックスを表示
MsgBox "ListIndex = " & ComboBox1.ListIndex

リスト表示最大数(ListRows プロパティ)



'ドロップダウンリストとしてのみ使用
ComboBox1.Style = fmStyleDropDownList
DropButtonStyle定数一覧
定数	値	内容
fmStyleDropDownCombo	0	選択項目のリストを持つコンボ ボックスとして機能します。 編集領域に値を入力したり、選択項目のリストから値を選択することができます。
fmStyleDropDownList	2	ドロップダウンリストとして機能します。リストから値を選択しなければなりません。
------------------------
1)ColumnCountでコンボボックスを2列にします。
2)TextColumnで表示する列を指定します。
3)ColumnWidthsで列幅を指定します。
========================================================









-------------------------------------------------------------
Private Sub CommandButton1_Click()

'----------------------------------


    ActiveSheet.ChartObjects("グラフ 1").Activate
    ActiveChart.ChartArea.Copy
    Range("B22").Select
    ActiveSheet.Paste


    ActiveSheet.Range("B20") = ActiveChart.Parent.Name
    myName = ActiveChart.Parent.Name
    
    
    Range("B25").Select
    ActiveSheet.ChartObjects("Chart 1").Activate
    
    
    ActiveSheet.ChartObjects(myName).Activate
    ActiveChart.Parent.Name = "AAA"
    
    ActiveChart.ChartTitle.Select
    ActiveChart.ChartTitle.Text = "Time:" & Str(Time())
    
    ActiveChart.PlotArea.Select
    ActiveChart.SetSourceData Source:=Range("M23:N29")
    
    ActiveChart.FullSeriesCollection(1).Select
    ActiveChart.FullSeriesCollection(1).DataLabels.Select
    
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorBackground1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorText1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
    With Selection.Format.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorBackground1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With
    Application.CommandBars("Format Object").Visible = False
    With Selection.Format.TextFrame2.TextRange.Font.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorText1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = 0
        .Transparency = 0
        .Solid
    End With




End Sub

-------------------------------------------------------------


VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Sheet2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Private Sub cmb学部_Change()
    MsgBox "change"
    
    '学科の配列作る
    ret = 学科配列作成(Me.cmb学部.Value, PUB_ary専攻, PUB_ary学科)
    
    
'配列をシートに張り付ける
'Range("学科").Cells.Clear
rHajime = Range("学科番号").Row
cHajime = Range("学科番号").Column
    

''張り付ける時、cmbボックスのchangeイベントが発生しないようにする
backup = Me.cmb学科.ListFillRange
Me.cmb学科.ListFillRange = ""

'Range("学科").ClearContents
Cells(rHajime + 1, cHajime) = "0"
Cells(rHajime + 1, cHajime + 1) = "全て"
For r = 0 To UBound(PUB_ary学科)
    Cells(rHajime + r + 2, cHajime) = PUB_ary学科(r).学科番号
    Cells(rHajime + r + 2, cHajime + 1) = PUB_ary学科(r).学科CODE & "|" & PUB_ary学科(r).学科名
Next r

Me.cmb学科.ListFillRange = backup






End Sub
Function 学科配列作成(my学部, ByRef PUB_ary専攻() As type専攻, ByRef PUB_ary学科() As type学科)
    
    Dim cntS, cntK

    If my学部 = 0 Then '全部
'        Range("学科").Cells.Clear
                
        Exit Function
    End If


    cntS = 0 '専攻配列の添え字
    cntK = 0 '学科配列の添え字
    ReDim Preserve PUB_ary学科(cntK)
    
'    PUB_ary学科(cntK).学科番号 = PUB_ary専攻(cntS).学科番号
'    PUB_ary学科(cntK).学科名 = PUB_ary専攻(cntS).学科CODE & "|" & PUB_ary専攻(cntS).学科名
    
    For cntS = 0 To UBound(PUB_ary専攻)
        If PUB_ary専攻(cntS).学部番号 = my学部 Then
            '1つ前の学科と違う時だけ処理
        If cntK = 0 Then
    PUB_ary学科(cntK).学科番号 = PUB_ary専攻(cntS).学科番号
    PUB_ary学科(cntK).学科CODE = PUB_ary専攻(cntS).学科CODE
    PUB_ary学科(cntK).学科名 = PUB_ary専攻(cntS).学科名
        
        cntK = cntK + 1
        Else
            
            If PUB_ary専攻(cntS).学科番号 <> PUB_ary学科(cntK - 1).学科番号 Then
'                cntK = cntK + 1
                ReDim Preserve PUB_ary学科(cntK)
                PUB_ary学科(cntK).学部番号 = PUB_ary専攻(cntS).学部番号
                PUB_ary学科(cntK).学部CODE = PUB_ary専攻(cntS).学部CODE
                PUB_ary学科(cntK).学部名 = PUB_ary専攻(cntS).学部名
                PUB_ary学科(cntK).学科番号 = PUB_ary専攻(cntS).学科番号
                PUB_ary学科(cntK).学科CODE = PUB_ary専攻(cntS).学科CODE
                PUB_ary学科(cntK).学科名 = PUB_ary専攻(cntS).学科名
                cntK = cntK + 1
        End If
        End If
        End If
    Next cntS
    
     '書き出してみる
    xx = ""
     For i = 0 To UBound(PUB_ary学科)
        xx = xx & vbCrLf & PUB_ary学科(i).学科番号 & " " & PUB_ary学科(i).学科CODE & " " & PUB_ary学科(i).学科名 & vbCrLf & "------"
    Next i
    
    MsgBox "学科配列" & vbCrLf & xx
    
    



End Function


Private Sub cmb学部_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
MsgBox "keydown"
End Sub

Private Sub cmb学部_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
MsgBox "keypress"
End Sub

Private Sub cmd基礎ファイル_Click()
Dim cHajime, rHajime

MsgBox "基礎ファイルを読みます"

'''シート読み込み実験
Dim ary学部学科専攻() As type専攻


'----------基本セットです
'プレーンに読み込む
ret = シート読み込み(PUB_ary専攻)
'不足している部分を追加する
'ret = 整理整頓(ary学部学科専攻, PUB_ary専攻)   '学科専攻が空白の場合の値の与え方(分析方法)が曖昧なので、スキップ。全セル埋めること

'---------学部だけの配列を作る
ret = 学部配列(PUB_ary専攻, Pub_ary学部)

'配列をシートに張り付ける
Range("学部").Cells.Clear
rHajime = Range("学部番号").Row
cHajime = Range("学部番号").Column
    

''張り付ける時、cmbボックスのchangeイベントが発生しないようにする
backup = Me.cmb学部.ListFillRange
Me.cmb学部.ListFillRange = ""

Cells(rHajime + 1, cHajime) = "0"
Cells(rHajime + 1, cHajime + 1) = "全て"
For r = 0 To UBound(Pub_ary学部)
    Cells(rHajime + r + 2, cHajime) = Pub_ary学部(r).学部番号
    Cells(rHajime + r + 2, cHajime + 1) = Pub_ary学部(r).学部CODE & "|" & Pub_ary学部(r).学部名
Next r

Me.cmb学部.ListFillRange = backup


'学部に応じて学科配列を作る

'学部学科に応じて専攻配列を作る

End Sub

Function シート読み込み(ByRef aryALL() As type専攻) As Boolean

Dim sheet学部 As Worksheet

Set sheet学部 = ThisWorkbook.Sheets("学部学科専攻")
rmin = 6 'データはここから始まる
cnt = 0 '配列のカウンタ
bef_学部 = -1
bef_学科 = -1
bef_専攻 = -1

r = rmin
'8=H列、専攻CODE


With sheet学部
chk = "": For c = 1 To 8: chk = chk & .Cells(r, c): Next c

While chk <> "" '終了はA~Hが空
    ReDim Preserve aryALL(cnt)
    aryALL(cnt).学部番号 = .Cells(r, 1)
    aryALL(cnt).学部CODE = .Cells(r, 2)
    aryALL(cnt).学部名 = .Cells(r, 3)
    aryALL(cnt).学科番号 = .Cells(r, 4)
    aryALL(cnt).学科CODE = .Cells(r, 5)
    aryALL(cnt).学科名 = .Cells(r, 6)
    aryALL(cnt).専攻番号 = .Cells(r, 7)
    aryALL(cnt).専攻CODE = .Cells(r, 8)
    aryALL(cnt).専攻名 = .Cells(r, 9)
    r = r + 1
    cnt = cnt + 1
    chk = "": For c = 1 To 8: chk = chk & .Cells(r, c): Next c
Wend
End With

    '書き出してみる
    xx = ""
     For i = 0 To UBound(aryALL)
        xx = xx & vbCrLf & aryALL(i).学部番号 & " " & aryALL(i).学部CODE & " " & aryALL(i).学部名 & _
            vbCrLf & aryALL(i).学科番号 & " " & aryALL(i).学科CODE & " " & aryALL(i).学科名 & _
            vbCrLf & aryALL(i).専攻番号 & " " & aryALL(i).専攻CODE & " " & aryALL(i).専攻名 & vbCrLf & "------"

    Next i
    
    MsgBox "読みました" & vbCrLf & xx

End Function
Function 学部配列(ByRef PUB_ary専攻() As type専攻, Pub_ary学部() As type学部) As Boolean
    Dim cntS, cntB

    cntS = 0     '専攻配列の添え字
    cntB = 0 '学部配列の添え字
    ReDim Preserve Pub_ary学部(cntB)
    
    Pub_ary学部(cntB).学部番号 = PUB_ary専攻(cntS).学部番号
    Pub_ary学部(cntB).学部CODE = PUB_ary専攻(cntS).学部CODE
    Pub_ary学部(cntB).学部名 = PUB_ary専攻(cntS).学部名
    
    For cntS = 1 To UBound(PUB_ary専攻)
        '1つ前の学部と違う時だけ処理
       If PUB_ary専攻(cntS).学部番号 <> PUB_ary専攻(cntS - 1).学部番号 Then
        
            cntB = cntB + 1
            ReDim Preserve Pub_ary学部(cntB)
            Pub_ary学部(cntB).学部番号 = PUB_ary専攻(cntS).学部番号
            Pub_ary学部(cntB).学部CODE = PUB_ary専攻(cntS).学部CODE
            Pub_ary学部(cntB).学部名 = PUB_ary専攻(cntS).学部名
        End If
    Next cntS
    
     '書き出してみる
    xx = ""
     For i = 0 To UBound(Pub_ary学部)
        xx = xx & vbCrLf & Pub_ary学部(i).学部番号 & " " & Pub_ary学部(i).学部CODE & " " & Pub_ary学部(i).学部名 & vbCrLf & "------"
    Next i
    
    MsgBox "学部配列" & vbCrLf & xx
    
End Function

Function 整理整頓(ByRef ary学部学科専攻() As type専攻, ByRef PUB_ary専攻() As type専攻) As Boolean
                    
    
'---------------------------------------
    MsgBox "整理整頓にきました"
'---------------------------------------

    '整理の方針
    'ぐるぐる回して、空欄を埋めて→ary専攻へ
     
        bk学部番号 = "@@@@@"
        bk学部CODE = "@@@@@"
        bk学部名 = "@@@@@"
        
        bk学科番号 = "@@@@@"
        bk学科CODE = "@@@@@"
        bk学科名 = "@@@@@"
        
        bk専攻番号 = "@@@@@"
        bk専攻CODE = "@@@@@"
        bk専攻名 = "@@@@@"
      
     
    ReDim Preserve PUB_ary専攻(UBound(ary学部学科専攻))
    For i = 0 To UBound(ary学部学科専攻)
        
        PUB_ary専攻(i) = ary学部学科専攻(i)
        
        
        '---------------学部
        If PUB_ary専攻(i).学部番号 <> bk学部番号 Then '1つ前の学部番号と異なる
            
            If PUB_ary専攻(i).学部番号 <> "" Then 'そして空白ではない
                bk学部番号 = PUB_ary専攻(i).学部番号
            End If
                
            PUB_ary専攻(i).学部番号 = bk学部番号
        End If
                
        If PUB_ary専攻(i).学部CODE <> bk学部CODE Then '1つ前の学部CODEと異なる
            
            If PUB_ary専攻(i).学部CODE <> "" Then 'そして空白ではない
                bk学部CODE = PUB_ary専攻(i).学部CODE
            End If
                
            PUB_ary専攻(i).学部CODE = bk学部CODE
        End If
                
        If PUB_ary専攻(i).学部名 <> bk学部名 Then '1つ前の学部名と異なる
            
            If PUB_ary専攻(i).学部名 <> "" Then 'そして空白ではない
                bk学部名 = PUB_ary専攻(i).学部名
            End If
                
            PUB_ary専攻(i).学部名 = bk学部名
        End If
                
                
                
        '---------------学科
        If PUB_ary専攻(i).学科番号 <> bk学科番号 Then '1つ前の学科番号と異なる
            
            If PUB_ary専攻(i).学科番号 <> "" Then 'そして空白ではない
                bk学科番号 = PUB_ary専攻(i).学科番号
            End If
                
            PUB_ary専攻(i).学科番号 = bk学科番号
        End If
                
        If PUB_ary専攻(i).学科CODE <> bk学科CODE Then '1つ前の学科CODEと異なる
            
            If PUB_ary専攻(i).学科CODE <> "" Then 'そして空白ではない
                bk学科CODE = PUB_ary専攻(i).学科CODE
            End If
                
            PUB_ary専攻(i).学科CODE = bk学科CODE
        End If
                
        If PUB_ary専攻(i).学科名 <> bk学科名 Then '1つ前の学科名と異なる
            
            If PUB_ary専攻(i).学科名 <> "" Then 'そして空白ではない
                bk学科名 = PUB_ary専攻(i).学科名
            End If
                
            PUB_ary専攻(i).学科名 = bk学科名
        End If

     
     Next i
        
        
    xx = ""
     For i = 0 To UBound(ary学部学科専攻)
        xx = xx & vbCrLf & PUB_ary専攻(i).学部番号 & " " & PUB_ary専攻(i).学部CODE & " " & PUB_ary専攻(i).学部名 & _
            vbCrLf & PUB_ary専攻(i).学科番号 & " " & PUB_ary専攻(i).学科CODE & " " & PUB_ary専攻(i).学科名 & _
            vbCrLf & PUB_ary専攻(i).専攻番号 & " " & PUB_ary専攻(i).専攻CODE & " " & PUB_ary専攻(i).専攻名 & vbCrLf & "------"

    Next i
    
    MsgBox "整理整頓したよ!!" & vbCrLf & xx

End Function

-------------------------------------------------------------
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "Sheet3"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
'==============================================
Private Sub CommandButton1_Click()
''''構造体配列の引数実験
'==============================================
Dim ary学部() As type学部

ReDim ary学部(2)
ary学部(0).学部番号 = "1"
ary学部(0).学部CODE = "UL"
ary学部(0).学部名 = "文学部"

ary学部(1).学部番号 = "2"
ary学部(1).学部CODE = "UE"
ary学部(1).学部名 = "経済学部"

ary学部(2).学部番号 = "3"
ary学部(2).学部CODE = "UB"
ary学部(2).学部名 = "経営学部"

'構造体をfunctionに渡し、値の変更と配列数を変更する
ret = 表示(ary学部)

'値変更,要素変更 OKでした
    For i = 0 To UBound(ary学部)
        xx = xx & vbCrLf & ary学部(i).学部番号 & " " & ary学部(i).学部CODE & " " & ary学部(i).学部名
    Next i
    MsgBox "帰宅後表示" & vbCrLf & xx


End Sub
'構造体を引数で渡される
Function 表示(ByRef ary() As type学部)
    For i = 0 To UBound(ary)
        xx = xx & vbCrLf & ary(i).学部番号 & " " & ary(i).学部CODE & " " & ary(i).学部名
    Next i
    MsgBox "呼ばれて表示" & vbCrLf & xx
    
    '呼ばれた先で値変更
    
ary(2).学部CODE = "UB2"
    
    '呼ばれた先で要素数変更
    ReDim Preserve ary(3)
    
ary(3).学部番号 = "4"
ary(3).学部CODE = "UJ"
ary(3).学部名 = "法学部"
    
End Function

''==============================================
'Private Sub CommandButton2_Click()
''''シート読み込み実験
'
'
''==============================================
'
'
'
'Dim ary学部学科専攻() As type専攻
'
''----------基本セットです
''プレーンに読み込む
'ret = シート読み込み(ary学部学科専攻)
''不足している部分を追加する
'ret = 整理整頓(ary学部学科専攻, PUB_ary学部, PUB_ary学科, PUB_ary専攻)
''学部だけの配列を作る
''-------------------
'
'
'
'
'
''学部に応じて学科配列を作る
'
''学部学科に応じて専攻配列を作る
'
'End Sub
'
'Function 整理整頓(ByRef ary学部学科専攻() As type専攻, _
'                    ByRef PUB_ary学部() As type学部, _
'                    ByRef PUB_ary学科() As type学科, _
'                    ByRef PUB_ary専攻() As type専攻) As Boolean
'
'
'    '---------------------------------------
'    'MSG
'    xx = ""
'     For i = 0 To UBound(ary学部学科専攻)
'        xx = xx & vbCrLf & ary学部学科専攻(i).学部番号 & " " & ary学部学科専攻(i).学部CODE & " " & ary学部学科専攻(i).学部名 & _
'            vbCrLf & ary学部学科専攻(i).学科番号 & " " & ary学部学科専攻(i).学科CODE & " " & ary学部学科専攻(i).学科名 & _
'            vbCrLf & ary学部学科専攻(i).専攻番号 & " " & ary学部学科専攻(i).専攻CODE & " " & ary学部学科専攻(i).専攻名 & vbCrLf & "------"
'    Next i
'    MsgBox "整理整頓にきました" & vbCrLf & xx
'    '---------------------------------------
'
'    '整理の方針
'    'ぐるぐる回して、空欄を埋めて→専攻へ
'    '専攻をぐるぐる回して、学科へ
'    '学科をぐるぐる回して、学部へ
'
'
'        bk学部番号 = "@@@@@"
'        bk学部CODE = "@@@@@"
'        bk学部名 = "@@@@@"
'
'        bk学科番号 = "@@@@@"
'        bk学科CODE = "@@@@@"
'        bk学科名 = "@@@@@"
'
'        bk専攻番号 = "@@@@@"
'        bk専攻CODE = "@@@@@"
'        bk専攻名 = "@@@@@"
'
'
'    ReDim Preserve PUB_ary専攻(UBound(ary学部学科専攻))
'    xx = ""
'     For i = 0 To UBound(ary学部学科専攻)
'
'        PUB_ary専攻(i) = ary学部学科専攻(i)
'        Call 比較して代入(PUB_ary専攻(i).学部番号, bk学部番号)
'
'
'        If PUB_ary専攻(i).学部番号 <> bk学部番号 Then '1つ前の学部番号と異なる
'
'            If PUB_ary専攻(i).学部番号 <> "" Then 'そして空白ではない
'                bk学部番号 = PUB_ary専攻(i).学部番号
'            End If
'
'            PUB_ary専攻(i).学部番号 = bk学部番号
'        End If
'
'
'        xx = xx & vbCrLf & PUB_ary専攻(i).学部番号 & " " & PUB_ary専攻(i).学部CODE & " " & PUB_ary専攻(i).学部名 & _
'            vbCrLf & PUB_ary専攻(i).学科番号 & " " & PUB_ary専攻(i).学科CODE & " " & PUB_ary専攻(i).学科名 & _
'            vbCrLf & PUB_ary専攻(i).専攻番号 & " " & PUB_ary専攻(i).専攻CODE & " " & PUB_ary専攻(i).専攻名 & vbCrLf & "------"
'
'    Next i
'
'    MsgBox "整理整頓したよ!!" & vbCrLf & xx
'
'End Function
'
'Function シート読み込み(ByRef aryALL() As type専攻) As Boolean
'
'rmin = 2 'データはここから始まる
'cnt = 0 '配列のカウンタ
'bef_学部 = -1
'bef_学科 = -1
'bef_専攻 = -1
'
'r = rmin
''8=H列、専攻CODE
'chk = "": For c = 1 To 8: chk = chk & Cells(r, c): Next c
'
'
'While chk <> "" '終了はA~Hが空
'    ReDim Preserve aryALL(cnt)
'    aryALL(cnt).学部番号 = Cells(r, 1)
'    aryALL(cnt).学部CODE = Cells(r, 2)
'    aryALL(cnt).学部名 = Cells(r, 3)
'    aryALL(cnt).学科番号 = Cells(r, 4)
'    aryALL(cnt).学科CODE = Cells(r, 5)
'    aryALL(cnt).学科名 = Cells(r, 6)
'    aryALL(cnt).専攻番号 = Cells(r, 7)
'    aryALL(cnt).専攻CODE = Cells(r, 8)
'    aryALL(cnt).専攻名 = Cells(r, 9)
'    r = r + 1
'    cnt = cnt + 1
'    chk = "": For c = 1 To 8: chk = chk & Cells(r, c): Next c
'Wend
'
'    '書き出してみる
'    xx = ""
'     For i = 0 To UBound(aryALL)
'        xx = xx & vbCrLf & aryALL(i).学部番号 & " " & aryALL(i).学部CODE & " " & aryALL(i).学部名 & _
'            vbCrLf & aryALL(i).学科番号 & " " & aryALL(i).学科CODE & " " & aryALL(i).学科名 & _
'            vbCrLf & aryALL(i).専攻番号 & " " & aryALL(i).専攻CODE & " " & aryALL(i).専攻名 & vbCrLf & "------"
'
'    Next i
'
'    MsgBox "読みました" & vbCrLf & xx
'
'
'
'
'
'End Function