Я работаю над таблицей Excel, которая в основном использует стандартную формулу в ячейках, но имеет два основных макроса VBA.Эти макросы должны запускаться тремя различными ячейками, которые автоматически изменяют свое значение по формуле .
. Представьте себе, что это так:
- 3 пары ячеек распределены полист (1 пара = 1 триггерная ячейка + 1 выходная ячейка)
- 1 вычислительный макрос и 1 очищающий макрос
- Если одна триггерная ячейка меняется на «x», вычислительный макрос запускается и выдаетвывод в соседнюю выходную ячейку.
- Пока это происходит, другие триггерные ячейки переходят к «», что начинает очистку (ClearContents) их выходных ячеек.
- Я думал об очистке выходных ячеекне требуется при расчете необходимого, но есть вероятность, что все три триггерных ячейки перейдут в "".Из-за этого я попытался реализовать очистку в отдельном макросе, чтобы избежать постоянного сохранения последнего вывода.
Я работаю с Excel 2010 в Windows 7, и это мой код, поэтомуfar:
Private Sub Worksheet_Change(ByVal target As Range)
'controls if trigger cell values change
'calls macros with trigger parameters
Select Case target.Address
'Trigger 1 activated
Case "$A$1"
With target
If .Value = "x" Then
Call Calculation(1) 'calculate output cell 1
ElseIf .Value = "" Then
Call Clean(1) 'clean output cell 1
Else
Call Error 'error notification
End If
End With
'-------------------------------------------
'Trigger 2 activated
Case "$A$2"
With target
If .Value = "x" Then
Call Calculation(2) 'calculate output cell 2
ElseIf .Value = "" Then
Call Clean(2) 'clean output cell 2
Else
Call Error 'error notification
End If
End With
'-------------------------------------------
'Trigger 3 activated
Case "$A$3"
With target
If .Value = "x" Then
Call Calculation(3) 'calculate output cell 3
ElseIf .Value = "" Then
Call Clean(3) 'clean output cell 3
Else
Call Error 'error notification
End If
End With
End Select
End Sub
__________________________________________________________________________
Sub Calculation(Trigger As Integer)
'calculation process with detection which output is to fill
End Sub
__________________________________________________________________________
Sub Clean(Trigger_Clean As Integer)
'cleaning process with detection which output is to clean
End Sub
__________________________________________________________________________
Sub Error()
'individual error notification
End Sub
При использовании моего кода я заметил, что он отлично работает для измененных вручную значений триггерных ячеек (записал x и нажал Enter), но не для изменения значения по формуле.Я также заметил, что не могу запустить расчет выхода 1 и очистку выходов 2 и 3 или очистку всех выходных ячеек одновременно.
Что мне нужно знать: Как запустить макрос при автоматическом изменении значения триггерной ячейки и как запустить расчет и процессы очистки сразу или подряд?
Очень надеюсь, что моя проблема заинтересует вас.Заранее благодарю за любую помощь.
RaspiManu