Per capire perche' Excel va in palla se inserisci Application.Run "HELP" all'interno della tua macro di Worksheet_Change devi tener presente che la Worksheet_Change si avvia tutte le volte che il foglio a cui si riferisce la Worksheet_Change subisce una modifica, anche via macro.
La cosa piu' probabile e' che la tua "HELP" modifica il foglio, quindi la Worksheet_Change riparte, quindi la HELP viene rilanciata, e modifica il foglio, quindi la Worksheet_Change riparte, quindi la HELP viene rilanciata.... (lascio a te contnuare la tiritera).
Fortunatamente Excel dispone di una istruzione che blocca il rilevamento degli "eventi"; quindi dovresti per cominciare modificare in
- Codice: Seleziona tutto
If Range("AQ4").Value <> "" Then
ActiveSheet.Range("$A$4:$DO$1005").AutoFilter Field:=43, Criteria1:="<>"
Application.EnableEvents=False
Application.Run "HELP"
Application.EnableEvents=True
End If
Inoltre sarebbe anche utile che quella parte di codice scatti solo in alcune circostanze, cosa che si ottiene verificando se la cella modificata corrisponde a un qualche indirizzo o intervallo specifico . Ad esempio:
- Codice: Seleziona tutto
If Target.Address = "$AQ$4" Then 'se la cella modificata e' AQ4, allora...
If Range("AQ4").Value <> "" Then
ActiveSheet.Range("$A$4:$DO$1005").AutoFilter Field:=43, Criteria1:="<>"
Application.EnableEvents = False
Application.Run "HELP"
Application.EnableEvents = True
End If
End If
La verifica da fare pero' la devi decidere tu che conosci la struttura del foglio e l'automazione complessiva da realizzare.
Ciao