Risultati da 1 a 18 di 18

Discussione: Inibire una macro



  1. #1
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Inibire una macro

    Buonasera a tutti. Come posso inibire una macro dopo la sua esecuzione, onde evitare che accidentalmente la si riesegua? Che codice inserire nella macro. Grazie

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Un modo potrebbe essere scrivere su una cella di un foglio (magari nascosto) un valore boolen (VERO/FALSO).
    Inizialmente FALSO, quando viene eseguita la macro sostituisci con VERO e ogni volta che si esegue la macro individuare se già eseguita nella suddetta cella. (più difficile a dirsi che a farsi)
    Un esempio rapido:
    Codice: 
    Sub Macro1()
    If Foglio1.Range("A1") Then
        'comandi
        Foglio1.Range("A1") = False
    End If
    End Sub
    Ma anche con l'ggetto Name. Ma sicuramente ce ne saranno tante altre ancora.

  3. #3
    L'avatar di tanimon
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    _
    Messaggi
    258
    Versione Office
    Excel 2007
    Likes ricevuti
    36
    Likes dati
    4

    Re: Inibire una macro

    ciao a tutti
    potresti vrificare gli eventi che le fai elaborare:
    nel codice, prima qualsiasi istruzione
    If evento gia' elaborato Then
    Exit Sub
    End If
    ora sono con il cellulare, ma se alleghi un file, qualcuno ti risolve il problema.
    ciao
    Frank

    scusa Rubik, non ti avevo visto e mi hai anticipato
    Excel 2007 win7 - Ogni Progetto è composto da Micro Progetti: PRIMA risolvi quelli, e PRIMA raggiungi il completamento del Progetto!
    Domanda: "Come avranno fatto gli utilizzatori di Excel VBA, quando non esisteva il registratore di macro?"

  4. #4
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Grazie Rubik72, grazie Frank, ho provato ma non riesco, allego il file di esempio e vorrei che dopo la prima esecuzione del sorteggio, questo non si ripetesse se involontariamente si riclicca. Grazie
    File Allegati File Allegati

  5. #5

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Si può fare inibendo il calcolo automatico. Prova così:

    Codice: 
    Private Sub Workbook_Open()
    Application.Calculation = xlCalculationManual
    End Sub
    
    
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.Calculation = xlCalculationAutomatic
    End Sub
    Ma ricorda che le formule non riclcoleranno in automatico e perciò bisognerà farlo manualmente (F9)

    EDIT: Dimenticavo che il codice va inserito nel Modulo di Classe ThisWorkBook/Questa_cartella_di_lavoro (dipende dalle versioni)

    EDIT2: Naturalmente, visto che l'evento ricalcolo è disabilitato, nel sorteggio bisogna ricalcolare:
    Codice: 
    Sub Sorteggio()
        Calculate
        'Range("A1").Select
        'ActiveCell.FormulaR1C1 = ""
        'Range("A1").Select
    End Sub
    P.S. Io avrei generato estrazioni casuali tramite VBA e non tramite formule volatili.

  6. #6
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1097
    Versione Office
    2010
    Likes ricevuti
    141
    Likes dati
    1

    Re: Inibire una macro

    oppure più semplicemente
    Codice: 
    Sub Sorteggio()
    '
    ' Sorteggio Macro
    '
    
    If Range("A1") = "  " Then Exit Sub
    Range("A1") = "  "
    End Sub

  7. #7
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Rubik ti ringrazio per l'interessamento. Ho provato ad inserire i codici in questa cartella di lavoro, ma ricliccado su Sorteggio mi si ripete il sorteggio, come se non fosse cambiato nulla. Grazie

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Citazione Originariamente Scritto da roky48 Visualizza Messaggio
    Rubik ti ringrazio per l'interessamento. Ho provato ad inserire i codici in questa cartella di lavoro, ma ricliccado su Sorteggio mi si ripete il sorteggio, come se non fosse cambiato nulla. Grazie
    Naturalmente la routine si attiva all'apertura e si disattiva alla chiusura del file. Hai salvato, chiuso e riaperto il file?

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    oppure più semplicemente
    Codice: 
    Sub Sorteggio()
    '
    ' Sorteggio Macro
    '
    
    If Range("A1") = "  " Then Exit Sub
    Range("A1") = "  "
    End Sub
    Ciao Patel, credo che l'amico Roky non voglia inibire in maniera permanete l'estrazione ma semplicemente voglia inibire il ricalcolo automatico (altrimenti sorteggierebbe ad ogni modifica/ricalcolo), almeno così ho capito.

    io farei così il sorteggio (senza formule solo tramite VBA)

    Codice: 
    Sub Sorteggio()
    Dim Orig As Range
    Dim Dest As Range
    Dim i As Long
    Dim x As Integer
    
    
    Set Orig = Range("r5:r16")
    Set Dest = Range("d5:d16")
    
    
    For i = 1 To Orig.Rows.Count
        Randomize Timer
    
    
        x = Int(Rnd() * Orig.Rows.Count) + 1
        Dest(i) = Orig(x)
        Dest(x) = Orig(i)
    Next
    
    
    End Sub
    e lascerei il calcolo automatico (già di Default)

  9. #9
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Rubik hai centrato il problema. ho applicato la tua macro, ma continua a farmi il ricalcolo ogni volta che aziono sorteggio.

  10. #10
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Ciao patel ti riallego il file : nascondi righe, perché per una questione di logistica ho dovuto inserire quattro righe sopra, ma quando eseguo Randomize Nomi, mi vengono in colonna D ma dalla cella D1, mentre mi devono venire dalla cella D5 alla cella D13. Ho modificato la macro ma con scarso risultato. Grazie
    File Allegati File Allegati

  11. #11

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Citazione Originariamente Scritto da roky48 Visualizza Messaggio
    Rubik hai centrato il problema. ho applicato la tua macro, ma continua a farmi il ricalcolo ogni volta che aziono sorteggio.
    strano, a me funziona!
    allego il file:
    File Allegati File Allegati

  12. #12
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Grazie Rubik ora tutto OK. Buona domenica. Michele

  13. #13
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Scusami Rubik , puoi dare un'occhiata anche all'altro file che ho allegato: roky48 - random

  14. #14
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Scusami Rubik ho affrettato la risposta, ho rivisto il file che mi hai allegato, e se riclicco su sorteggio me lo riesegue.

  15. #15

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Citazione Originariamente Scritto da roky48 Visualizza Messaggio
    Scusami Rubik ho affrettato la risposta, ho rivisto il file che mi hai allegato, e se riclicco su sorteggio me lo riesegue.
    Tu vuoi che esegua una sola volta il sorteggio?
    Si può dire a Excel di eseguire una sola volta la routine sorteggio, ma se lo devi rieseguire come fai?

  16. #16
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Hai ragione Rubik, io volevo evitare che cliccando involontariamente mi rifaccia il sorteggio, cmq lo lascio così com'è. Grazie
    P.S. Hai dato un'occhiata all'altro file

  17. #17

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1019
    Likes dati
    977

    Re: Inibire una macro

    Citazione Originariamente Scritto da roky48 Visualizza Messaggio
    [...]P.S. Hai dato un'occhiata all'altro file
    Ho dato un occhiata e c'è qualcosa che non va.
    Volevi 17 nomi univoci su 12 di origine:92:(impossibile)
    Ho fatto queste modifiche:
    Codice: 
    Sub Casuale()
    Dim uRiga As Integer, nrand As Integer, Campo As Range, Riga As Integer
    Dim x As Integer, i As Integer
    
    
    If Range("W5").Value = "" Then
        MsgBox "Nessun nome prensente nella colonna W !!!", vbCritical
    Else
        uRiga = Range("W" & Rows.Count).End(xlUp).Row
        Range("D5:d" & uRiga).ClearContents
        Range("D" & uRiga).Value = Range("W" & uRiga).Value
        Range("C106").Value = Range("W" & uRiga).Value
        Range("D" & uRiga + 1 & ":D106").EntireRow.Hidden = True
        uRiga = uRiga - 1
        Riga = 5
        For i = 5 To uRiga
            Do
                Set Campo = Range("D1:D" & Riga)
                Randomize Timer
                nrand = Int(Rnd * (uRiga - 4) + 1)
                x = Application.WorksheetFunction.CountIf(Campo, Range("W" & nrand + 4).Value)
            Loop While x > 0
            Range("D" & Riga).Value = Range("W" & nrand + 4).Value
            Riga = Riga + 1
        Next i
    End If
    End Sub

  18. #18
    L'avatar di roky48
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Bari
    Età
    69
    Messaggi
    273
    Versione Office
    Excel 2013
    Likes ricevuti
    1

    Re: Inibire una macro

    Infinite grazie Rubik .... PERFETTO. Buona serata

Discussioni Simili

  1. Inibire messaggio collegamenti esterni
    Di Cecco Beppe nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 22/02/17, 17:37
  2. Inibire il comando "rimuovi protezione foglio"
    Di vittorio dit nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 07/11/16, 13:57
  3. inibire il click del mouse sulle etichette dei fogli
    Di Japogi nel forum Domande su Excel VBA e MACRO
    Risposte: 11
    Ultimo Messaggio: 17/08/16, 18:12
  4. Inibire i Button
    Di dautattmaui nel forum Domande su Excel VBA e MACRO
    Risposte: 2
    Ultimo Messaggio: 29/07/16, 17:58
  5. Inibire una macro dopo averla eseguita
    Di roky48 nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 30/10/15, 14:03

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •