Я пишу некоторый код в VBA в Excel, который следует за этим процессом: он просматривает столбец E, пока не находит заголовок «Имя элемента», а затем просматривает столбец F, пока не найдет «Итого».Основываясь на этих двух местах, я могу суммировать общее количество (n) значений между ними.
Это было написано в модуле, и код для этого показан ниже:
Public Sub Sum()
Dim Sub_Total As Range
Dim Total As Range
Set Item_Name = Sheets("Sheet1").Range("E:E").Find("Item Name")
Set Sub_Total = Sheets("Sheet1").Range("F:F").Find("Sub Total")
Range(Sub_Total.Address).Offset(0, 1) = Application.Sum(Range(Cells(Item_Name.Row + 1, 7), Cells(Sub_Total.Row - 1, 7)))
End Sub
Затем я хотел иметь функцию, которая могла бы определять, изменил ли пользователь значение в пределах области суммирования, и поэтому, если значение было изменено, оно снова суммировало бы все значения (снова просмотрите этот подпункт).
Я написал эту часть кода в коде Worksheet и он выглядит следующим образом:
Public Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range(Cells(Range("E:E").Find("Item Name").Row, 7), Cells(Range("F:F").Find("Sub Total").Row, 7))) Is Nothing Then
Call Sum
End If
End Sub
Я установил его так, что если пользователь изменил значение, он будет вызывать подпрограмму в модуле, который я создал ранее.
Однако всякий раз, когда я пытаюсь запустить этот код, я получаю сообщение об ошибке «Ошибка во время выполнения» 1004: ошибка приложения или объекта ».Когда я нажимаю «Отладка», он выделяет эту строку кода как проблему:
Set Item_Name = Sheets("Sheet1").Range("E:E").Find("Item Name")
Я пытался исследовать эту ошибку, а также много раз пытался решить эту проблему, но безрезультатно.Я чувствую, что это должно быть проблемой с вызывающей процедурой, потому что sub Sum () работает нормально, если она не вызывается в Sub рабочего листа.
Любые идеи или решения будут высоко оценены.Большое спасибо