Retrieve Status Sub/Function - [RISOLTO]

di il
5 risposte

Retrieve Status Sub/Function - [RISOLTO]

Private Sub Worksheet_Change(ByVal Target As Range)

' if column 1 extract the data
If Target.Cells.Count = 1 And Target.Column = 1 And Trim(Target) <> vbNullString Then
    ' searching the database data
    MySearch Target
Else
    ' if deleted value in column 1, clean up cells
    If Trim(Target) = vbNullString Then myClearRowsMultiple Target
End If

End Sub

Ho una Sub che viene richiamata in modo ricorsivo e questo voglio evitarlo 
Accade quando Target = VbNullString
In pratica quando viene richiamata la routine   “ MySearch Target ”  quest'ultima aggiorna la cella in Column 1 e fa riscattare l'evento Worksheet_Change

Ho utilizzato un flag True/False per controllare se era già in esecuzione la routine “ MySearch Target ”  ma non mi piace molto come soluzione

Domanda:  è possibile avere un valore di ritorno per determinare se una Routine, Sub o Function, è stata già evocata?

Diversamente farò con il flag Boolean 
Grazie

5 Risposte

  • Re: Retrieve Status Sub/Function - [RISOLTO]

    Ma per questo non c'è già l'accoppiata Application.EnableEvents = False da mettere prima e Application.EnableEvents = True da mettere dopo le righe che generano variazioni nel foglio ?

  • Re: Retrieve Status Sub/Function - [RISOLTO]

    20/04/2023 - rollis13 ha scritto:


    Ma per questo non c'è già l'accoppiata Application.EnableEvents = False da mettere prima e Application.EnableEvents = True da mettere dopo le righe che generano variazioni nel foglio ?

    Sarebbe come impostare una variabile booleana prima e dopo il processo da eseguire?

    Application.EnableEvents non l'ho mai provata… la verifico
    Grazie

    [AGGIORNAMENTO]

    Ma lo sai che invece tale metodo l'ho già usato in passato …. devo togliermi un bel pò di ruggine e riabituarmi a ricerca meglio gli argomenti sul supporto Microsoft

    In 3 secondi ho risolto tutto …. ora verifico gli altri passaggi nel codice e sistemo tutto il resto
    Grazie mille  davvero tanto, gentilissimo !!!!

  • Re: Retrieve Status Sub/Function - [RISOLTO]

    20/04/2023 - By65Franco ha scritto:


    20/04/2023 - rollis13 ha scritto:


    Ma per questo non c'è già l'accoppiata Application.EnableEvents = False da mettere prima e Application.EnableEvents = True da mettere dopo le righe che generano variazioni nel foglio ?

    Sarebbe come impostare una variabile booleana prima e dopo il processo da eseguire?

    Application.EnableEvents non l'ho mai provata… la verifico
    Grazie

    [AGGIORNAMENTO]

    Ma lo sai che invece tale metodo l'ho già usato in passato …. devo togliermi un bel pò di ruggine e riabituarmi a ricerca meglio gli argomenti sul supporto Microsoft

    In 3 secondi ho risolto tutto …. ora verifico gli altri passaggi nel codice e sistemo tutto il resto
    Grazie mille  davvero tanto, gentilissimo !!!!

    ' retrieve value recordset
    Application.EnableEvents = Not Application.EnableEvents
    If Not rs.EOF Then
       ' return value
       Cells(Target.Row, ColumnIndex:=2) = rs.Fields(2).Value
       Cells(Target.Row, ColumnIndex:=3) = rs.Fields(3).Value
       Cells(Target.Row, ColumnIndex:=4) = rs.Fields(4).Value
       Cells(Target.Row, ColumnIndex:=5) = rs.Fields(5).Value
       Cells(Target.Row, ColumnIndex:=6) = rs.Fields(6).Value
    Else
       ' clean up the cells
       myClearRowsMultiple Target
       MsgBox "Elemento [" & Target & "] non trovato !", vbCritical, "Error"
       Range(Target.Address).Select
       Selection.ClearContents
    End If
    Application.EnableEvents = Not Application.EnableEvents

    Ecco qua… applico il metodo in questo modo…  che dici?
    Solo in questo passaggio di codice evito la chiamata su Worksheet_Change(ByVal Target As Range) per almeno 7 volte che mi mandava in ricorsiva la chiamata a questa routine.
    Grazie ancora !!!

  • Re: Retrieve Status Sub/Function - [RISOLTO]

    Che bisogno c'è di complicare le cose con quelle negazioni ? che equivale a: Se attivato si disattiva ma se è disattivato si attiva.
    Se serve disattivare l'innesco dell'evento Worksheet_Change si disattivano gli Eventi con un semplice = False e quando non serve più si riattivano gli Eventi con un = True .

  • Re: Retrieve Status Sub/Function - [RISOLTO]

    20/04/2023 - rollis13 ha scritto:


    Che bisogno c'è di complicare le cose con quelle negazioni ? che equivale a: Se attivato si disattiva ma se è disattivato si attiva.
    Se serve disattivare l'innesco dell'evento Worksheet_Change si disattivano gli Eventi con un semplice = False e e quando non serve più si riattivano gli Eventi con un = True .

    si certo…. ok 
    Grazie!!!

Devi accedere o registrarti per scrivere nel forum
5 risposte