Есть ли способ, которым я могу временно отключить событие Workbook_SheetChange перед моим временем l oop и восстановить его на wend?
Я полагаю, что я сам в рекурсивном l oop. Динамически изменяя значение и инициируя новую активную ячейку, я отключаю событие Workbook_SheetChange. Что было бы хорошо, за исключением того, что я нахожусь в рутине SheetChange в то время.
Не хорошо.
Цель состоит в том, чтобы помочь мне выучить мои линии для моей роли в театральном представлении, заставив меня введите мои строки, за которыми автоматически следует следующая строка (и) другого актера (ов) до моей следующей строки. Которые, конечно, представляют мои реплики.
Идея здесь состоит в том, чтобы либо автоматически заполнить ячейку в столбце А, когда соответствующая ячейка в столбце c не оценена как «Кондон» (Моя роль в пьесе Гаупмана ) или сравните (проанализированное содержимое) ячейки в столбце A с (проанализированным содержимым) соответствующей ячейки в столбце B (через подпрограмму CleanCode не показано).
Я хочу заполнить ячейку / столбец A с соответствующей ячейкой / столбцом B ТОЛЬКО КОГДА я активен в активной строке, и ячейка в столбце C в этой строке НЕ является «Condon». Но затем я хочу заполнить каждую ячейку столбца A каждой последующей строки значением ее столбца B, пока ее столбец C снова не станет "Condon" (или, в конечном счете, пустым, чтобы остановить - но это позже)
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
If ActiveCell.Column <> 1 Then Exit Sub 'Only interested in column A activity
Dim ColA As String
Dim ColB As String
Dim CellA As Range
Dim CellB As Range
If ActiveCell.Address = "$A$1" Then 'Avoid error messages when resetting cursor
Exit Sub
End If
Set CellA = ActiveCell.Offset(-1, 0) 'Point back to row just processed (col A)
Set CellB = ActiveCell.Offset(-1, 1) ' (col B)
If Len(CellA.Value) > 0 Then 'Does previous cell in A column contain a value?
ColA = CleanCode(CellA) 'Remove all but alpha and capitalize values in column A cell
ColB = CleanCode(CellB) 'Remove all but alpha and capitalize values in column B cell
If (ColA <> ColB) Then 'If they don't match show contents of Column B cell
If (MsgBox(CellB, vbRetryCancel) = vbRetry) Then
CellA.Select 'Continue anyway on retry
End If
Else
While (ActiveCell.Offset(0, 2)) <> "Condon" 'Unless cell in column C = Condon (test case)
'OOPS! I think next statement invokes a Workbook_SheetChange event
ActiveCell.Offset(0, 0) = ActiveCell.Offset(0, 1) 'Populate cell in column A with B
ActiveCell.Offset(1, 0).Select 'point to the next row
Wend
End If
End If
End Sub
Так есть ли способ, которым я могу временно отключить событие Workbook_SheetChange перед моим временем l oop и восстановить его на wend? Или есть даже лучший способ?
(Кстати, я вижу, что время, пока я не выберу сброс, пока не будет запущено, но сейчас не волнуюсь)