QA@IT
«質問へ戻る

質問を投稿

VB.NETの”オブジェクト参照がオブジェクトインスタンスに設定されていません”について

はじめまして、質問させていただきます。

今現在、VBにて工程管理のデータベースを作っております。
内容は、プロジェクトの進行状況をデータベース内で管理し、今現在の状況を入力したりします。
完了したプロジェクトは、そのプロジェクト名をオレンジ色で表示し、今現在手を付けているプロジェクトは青で、
まだ手を付けていないものは緑で表示させます。
そして、そのプロジェクトの進行状況をグラフにして見やすくするものを作っております。

しかし、プログラムの矢印の部分で
「オブジェクト参照がオブジェクトインスタンスに設定されていません」
というエラーが出ており、どこをどのように直せばよいかわからず作業が止まってしまっています。
このエラーの原因と、対処方法を教えてください。

よろしくお願いします。

 Private Sub TreeViewLoad()

        Dim control As New Controller
        Dim projectlist As ArrayList = control.GetProjectList 'コントローラからプロジェクト情報を取得

        Me.TreeView_Project.Nodes.Clear()

        Dim rootNode As TreeNode
        rootNode = New TreeNode()
        rootNode.Text = "プロジェクト"    'ルートノードの生成
        TreeView_Project.Nodes.Add(rootNode)


        Dim project As ProjectClass
        For Each project In projectlist 'プロジェクトをTreeNodeに追加
            Dim i As Integer = 0
 **→**    Dim myTreeNodeArray(project.ProcessList.Count - 1) As TreeNode 'プロジェクト毎の工程のTreeNode
            Dim proc As ProcessClass

            For Each proc In project.ProcessList
                proc.OKValue = control.GetOKTotalValue(proc.ProcessID)
                proc.NGValue = control.GetNGTotalValue(proc.ProcessID)

                '工程の状況、工程番号m、工程名、総良品数、総不良品数、生産予定数をTreeに表示
                myTreeNodeArray(i) = New TreeNode(proc.ProcessStat + proc.ProcessNo + _
                                                  ":" + proc.ProcessName + _
                                                  " [ " + proc.OKValue.ToString + _
                                                  "(" + proc.NGValue.ToString + ")" + _
                                                  "/" + proc.ProductValue.ToString + " ] ") '工程のTreeNodeの生成

                myTreeNodeArray(i).Tag = proc 'TreeNode毎に工程を割り当て

                '工程の状況(未着手、着手、完了)を色分け
                If proc.ProcessStat = "未着手" Then
                    myTreeNodeArray(i).ForeColor = Color.Green
                ElseIf proc.ProcessStat = "着手" Then
                    myTreeNodeArray(i).ForeColor = Color.Blue
                Else
                    myTreeNodeArray(i).ForeColor = Color.Orange

                End If

                i += 1
            Next proc
            Dim projectNode As New TreeNode(project.ProjectNo + ":" + project.ProjectName + "[" + project.Group.GroupName + "]", myTreeNodeArray)

            projectNode.ForeColor = Color.Red
            projectNode.Tag = project
            Me.TreeView_Project.Nodes(0).Nodes.Add(projectNode)  'プロジェクトをTreeNodeに追加
        Next project

        With Me.TreeView_Project
            .ExpandAll()
            .ForeColor = Color.Navy
            .BackColor = Color.Azure
            .LineColor = Color.Red
            .ContextMenuStrip = Me.ContextMenuStrip_Edit 'TreeViewを右クリックしたときのメニューの割り当て
        End With

    End Sub
コード
はじめまして、質問させていただきます。

今現在、VBにて工程管理のデータベースを作っております。
内容は、プロジェクトの進行状況をデータベース内で管理し、今現在の状況を入力したりします。
完了したプロジェクトは、そのプロジェクト名をオレンジ色で表示し、今現在手を付けているプロジェクトは青で、
まだ手を付けていないものは緑で表示させます。
そして、そのプロジェクトの進行状況をグラフにして見やすくするものを作っております。

しかし、プログラムの矢印の部分で
「オブジェクト参照がオブジェクトインスタンスに設定されていません」
というエラーが出ており、どこをどのように直せばよいかわからず作業が止まってしまっています。
このエラーの原因と、対処方法を教えてください。

よろしくお願いします。

```ここに言語を入力
 Private Sub TreeViewLoad()
       
        Dim control As New Controller
        Dim projectlist As ArrayList = control.GetProjectList 'コントローラからプロジェクト情報を取得

        Me.TreeView_Project.Nodes.Clear()

        Dim rootNode As TreeNode
        rootNode = New TreeNode()
        rootNode.Text = "プロジェクト"    'ルートノードの生成
        TreeView_Project.Nodes.Add(rootNode)


        Dim project As ProjectClass
        For Each project In projectlist 'プロジェクトをTreeNodeに追加
            Dim i As Integer = 0
 **→**    Dim myTreeNodeArray(project.ProcessList.Count - 1) As TreeNode 'プロジェクト毎の工程のTreeNode
            Dim proc As ProcessClass

            For Each proc In project.ProcessList
                proc.OKValue = control.GetOKTotalValue(proc.ProcessID)
                proc.NGValue = control.GetNGTotalValue(proc.ProcessID)

                '工程の状況、工程番号m、工程名、総良品数、総不良品数、生産予定数をTreeに表示
                myTreeNodeArray(i) = New TreeNode(proc.ProcessStat + proc.ProcessNo + _
                                                  ":" + proc.ProcessName + _
                                                  " [ " + proc.OKValue.ToString + _
                                                  "(" + proc.NGValue.ToString + ")" + _
                                                  "/" + proc.ProductValue.ToString + " ] ") '工程のTreeNodeの生成

                myTreeNodeArray(i).Tag = proc 'TreeNode毎に工程を割り当て

                '工程の状況(未着手、着手、完了)を色分け
                If proc.ProcessStat = "未着手" Then
                    myTreeNodeArray(i).ForeColor = Color.Green
                ElseIf proc.ProcessStat = "着手" Then
                    myTreeNodeArray(i).ForeColor = Color.Blue
                Else
                    myTreeNodeArray(i).ForeColor = Color.Orange

                End If

                i += 1
            Next proc
            Dim projectNode As New TreeNode(project.ProjectNo + ":" + project.ProjectName + "[" + project.Group.GroupName + "]", myTreeNodeArray)

            projectNode.ForeColor = Color.Red
            projectNode.Tag = project
            Me.TreeView_Project.Nodes(0).Nodes.Add(projectNode)  'プロジェクトをTreeNodeに追加
        Next project

        With Me.TreeView_Project
            .ExpandAll()
            .ForeColor = Color.Navy
            .BackColor = Color.Azure
            .LineColor = Color.Red
            .ContextMenuStrip = Me.ContextMenuStrip_Edit 'TreeViewを右クリックしたときのメニューの割り当て
        End With
       
    End Sub
コード
```