Изменить значение родительской ячейки на основе значения всех дочерних ячеек

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

0
задан Pᴇʜ 11 April 2019 в 12:04
поделиться

1 ответ

Вы можете попробовать:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim LastRow As Long, i As Long, ParentKey As Long
    Dim arr As Variant
    Dim booClose As Boolean

    With ThisWorkbook.Worksheets("Sheet1")

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        If Not Intersect(Target, .Range("C2:C" & LastRow)) Is Nothing And Target.Count = 1 Then

            If InStr(1, .Cells(Target.Row, 1).Value, ".") = 0 Then

                MsgBox "You are trying to manually change Parent Status."

            Else

                ParentKey = Mid(.Cells(Target.Row, 1).Value, 1, InStr(1, .Cells(Target.Row, 1).Value, "."))

                For i = 2 To LastRow

                    If InStr(1, .Cells(i, 1).Value, ".") <> 0 Then

                        If Mid(.Cells(i, 1).Value, 1, InStr(1, .Cells(i, 1).Value, ".")) = ParentKey Then

                            If .Cells(i, 3).Value = "Closed" Then

                                booClose = True

                            Else

                                booClose = False

                                Exit For

                            End If

                        End If

                    End If

                Next i

                For i = 2 To LastRow

                    If InStr(1, .Cells(i, 1).Value, ".") = 0 Then

                        If .Cells(i, 1).Value = ParentKey Then

                            Application.EnableEvents = False

                                If booClose = True Then
                                    .Cells(i, 3).Value = "Closed"
                                    Exit For
                                Else
                                    .Cells(i, 3).Value = "Open"
                                    Exit For
                                End If

                            Application.EnableEvents = True

                        End If

                    End If

                Next i

            End If

        End If

    End With

End Sub
0
ответ дан Error 1004 11 April 2019 в 12:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: