データの構造化

Public Type SyainData 'Dataの構造体(ユーザー定義型)を宣言
Id As Long
Name As String
Kinzoku As Long
Syozoku As String
Yakusyoku As String
End Type

                                                                                                                                    • -

Public Sub test()
Dim i As Long
Dim WrkSyainData() As SyainData

If GetSyainData(WrkSyainData()) Then
For i = 1 To UBound(WrkSyainData)
If WrkSyainData(i).Id = Range("syain_id") Then
Call SetSyainData(WrkSyainData(i))
Exit For
End If
Range("hyoji_all").ClearContents '---- 範囲 hyoji_all をclear
Next i
Else
MsgBox "SyainMSTに不正なデータがあるため処理を中断しました", vbCritical
End If
End Sub

                                                                                                                                    • -

Private Function GetSyainData(ByRef pWrkSyainData() As SyainData) As Boolean
Dim i As Long
Dim WrkRange As Variant

On Error GoTo ErrGyo
WrkRange = Sheets("SyainMST").UsedRange
ReDim pWrkSyainData(UBound(WrkRange))

For i = 2 To UBound(WrkRange)
pWrkSyainData(i).Id = WrkRange(i, 1)
pWrkSyainData(i).Name = WrkRange(i, 2)
pWrkSyainData(i).Kinzoku = WrkRange(i, 3)
pWrkSyainData(i).Syozoku = WrkRange(i, 4)
pWrkSyainData(i).Yakusyoku = WrkRange(i, 5)
Next i
GetSyainData = True
Exit Function

ErrGyo:
GetSyainData = False
End Function

                                                                                                                                    • -

Public Function SetSyainData(ByRef pWrkSyainData As SyainData)

Range("syain_id").Offset(1, 0) = pWrkSyainData.Name
Range("syain_id").Offset(2, 0) = pWrkSyainData.Kinzoku
Range("syain_id").Offset(3, 0) = pWrkSyainData.Syozoku
Range("syain_id").Offset(4, 0) = pWrkSyainData.Yakusyoku

End Function

                                                                                                                                    • -