VBA: код работает в оригинальном модуле листа, но не новый - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть код, разработанный в инструменте, над которым я работаю, который выполняет некоторые базовые вычисления для добавления дат и т. Д. На основе изменения другой ячейки.Он отлично работает на листе, для которого он был создан, однако, когда я копирую его в другой модуль листа для аналогичной задачи (добавлены два дополнительных столбца), он, похоже, не работает.Я изменил ссылки, чтобы учесть два дополнительных столбца, и я не получаю никаких сообщений об ошибках, он просто не выполняет вычисления, которые он должен делать.Я новичок в VBA и просто не могу понять это.Заранее спасибо за помощь!

Public Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo SelectError:
Oval = Target.Value
SelectError:
End Sub

Private Sub Worksheet_Change2(ByVal Target As Range)


If Not Intersect(Target, Range("G11:G202")) Is Nothing Then
On Error GoTo Eerror:

Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="Password"

        'Dim TarAddress As String


            Range(Target.Address).Select  ''''DO NOT DELETE, PREVENTS LOOP

If Range(Target.Address).Value <> 0 Then
Range(Target.Address).Offset(0, 1).Value = Date

'Update Budget

If Range(Target.Address).Offset(0, 5).Value = 0 Then

Range(Target.Address).Offset(0, 5).Value = Range(Target.Address).Value

End If

If Range(Target.Address).Value <> 0 Then
Range(Target.Address).Offset(0, 6).Value = Range(Target.Address).Value

End If

'Set Task Status to Not Started in Cancelled

If Range(Target.Address).Offset(0, 2).Value = "Cancelled" Then

Range(Target.Address).Offset(0, 2).Value = "Not Started"

End If


End If
Eerror:
ActiveWorkbook.Protect Password:="Password"
End If


If Not Intersect(Target, Range("I11:I202")) Is Nothing Then
On Error GoTo GError:
Application.ScreenUpdating = False
ActiveWorkbook.Unprotect Password:="Password"

        'Dim TarAddress As String


             Range(Target.Address).Select  ''''DO NOT DELETE, PREVENTS LOOP

'Mark Complete Date
If Range(Target.Address).Value = "Complete" Or Range(Target.Address).Value = "Complete w/ Issues" Then
Range(Target.Address).Offset(0, 2).Value = Date
Range(Target.Address).Offset(0, -2).Value = 0
End If
'Mark Start Date w/ Complete Date if Blank
If (Range(Target.Address).Value = "Complete" Or Range(Target.Address).Value = "Complete w/ Issues") And Range(Target.Address).Offset(0, 1).Value = "" Then
Range(Target.Address).Offset(0, 1).Value = Date
End If

'Mark Start Date
If Range(Target.Address).Value = "In Progress" And Range(Target.Address).Offset(0, 1).Value = "" Then
Range(Target.Address).Offset(0, 1).Value = Date
End If

'Mark Cancel Date
If Range(Target.Address).Value = "Cancelled" And Range(Target.Address).Offset(0, 8).Value = 1 Then
Range(Target.Address).Offset(0, 13).Value = Date
End If
GError:
ActiveWorkbook.Protect Password:="Password"
End If

End Sub

ETA: я не знаю, потому что это в листе по сравнению с модулем, но он не позволит мне пройти через код, чтобы попытаться отследить его,Пример того, чего я ожидаю, это то, что если я добавлю значение больше 0 в ячейку в столбце G, он обновит следующую ячейку до сегодняшней даты, скопирует и вставит это значение в ячейки 5 и 6 столбцови еще несколько вещей.Он не вносит никаких изменений, как это, когда я вводю значение, и не выдает сообщение об ошибке.Лист просто остается без изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...