Condividi:        

[excel2007] Blocco macro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[excel2007] Blocco macro

Postdi Cele79 » 10/07/17 22:36

Ciao a tutti.
Tramite questa macro
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If IsError(Range("bm4")) Then Exit Sub
If Range("bm4") <> 0 Then Exit Sub
If Range("bb1").Value <> Range("bm4").Value Then
    Application.EnableEvents = False
    Range("bb1").Value = Range("bm4").Value
    Call RIGAVUOTA
    Application.EnableEvents = True
    Else: Exit Sub
End If
End Sub

quando nella cella cella BM4 ho il valore 0 mi parte la macro RIGAVUOTA che è questa
Codice: Seleziona tutto
Sub RIGAVUOTA()

     Sheets("nuovo").Range("BK5:CB5").Copy
    Sheets("nuovo").Range("BK5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Sheets("nuovo").Range("BK5:CB5").Insert
    Application.CutCopyMode = False
 
End Sub

che mi sposta tutto di una riga piu in basso e mi lascia uno spazio.
Comunque io vorrei sapere se è possibile che questa macro venga attivata solo una volta quando nella cella BM4 c'è il valore 0 che viene trovato tramite questa formula,
Codice: Seleziona tutto
=SE.ERRORE(CONFRONTA(CERCA.VERT(U4;DN4:DN233;1;0);DN4:DN233;0)-1;"0")

In U4 il valore lo metto tramite tastiera.
A me succede che quando il valore è 0 la macro si attiva ma basta che io metta altri valori in altre celle che la macro parte visto che in BM4 ho ancora 0 e lo stesso quando riapro il file la macro parte.
vorrei sapere se è possibile bloccare questa cosa sino a quando in BM4 il valore non sia diverso da 0 ma che si riattivi quando torna a 0 ma solo una volta.
Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Sponsor
 

Re: [excel2007] Blocco macro

Postdi Anthony47 » 12/07/17 02:06

Usa una cella di servizio...
Ad esempio, usando per questo scopo BZ1:
Codice: Seleziona tutto
Sub RIGAVUOTA()
     Sheets("QualeFoglio??").Range("BZ1")=1         '<<< AGGIUNGI QUI
     Sheets("nuovo").Range("BK5:CB5").Copy
'etc etc


Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If IsError(Range("bm4")) Then Exit Sub
If Range("bm4") <> 0 Then Range("BZ1").ClearContents : Exit Sub  '<<< MODIFICATA
If Range("BZ1") <> "" Then Exit Sub                   '<<< AGGIUNTA
If Range("bb1").Value <> Range("bm4").Value Then
'etc etc

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel2007] Blocco macro

Postdi Cele79 » 27/07/17 21:22

Scusa il ritardo nel rispondere ma ho avuto problemi di connessione.
Ho provato la tua macro ma si inceppava e mi restava fisso facendo calcoli sino a quando non si bloccava da sola.
Nel mentre ho provato delle soluzioni e sono arrivato a questa macro
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If Not IsError(Range("BM4")) Then
    If Range("BK2") = Range("BL2") Then
        If Range("BJ4").Value <> Range("BM4").Value Then    '<< BJ4??
            Application.EnableEvents = False
            Range("BJ4").Value = Range("BM4").Value         '<< BJ4??
            Call CAMBIODATA
           
            Application.EnableEvents = True
           End If
        End If
         End If
End Sub

Quando BK2 è uguale a BL2 si attiva la macro che mi fa partire la macro CAMBIODATA.
Ho fatto prove su prove e sembra faccia il suo dovere.
ho ho un problema;
questa macro qui deve funzionare nello stesso foglio e attivare altre macro al cambiare di altre celle.
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If Not IsError(Range("CE4")) Then
    If Range("CC2") = Range("CD2") Then
        If Range("CC3").Value <> Range("CE4").Value Then
            Application.EnableEvents = False
            Range("CC3").Value = Range("CE4").Value
            Call CAMBIODATA2
           
            Application.EnableEvents = True
           End If
        End If
         End If
End Sub

Sarebbe cosi la seconda.
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If Not IsError(Range("CW4")) Then
    If Range("CU2") = Range("CV2") Then
        If Range("CU3").Value <> Range("CW4").Value Then
            Application.EnableEvents = False
            Range("CU3").Value = Range("CW4").Value
            Call CAMBIODATA3
           
            Application.EnableEvents = True
           End If
        End If
         End If
End Sub

Vorrei sapere come si fa a far fuonzione queste tre macro nello stesso foglio per far partire le rispettive macro associate. Grazie
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32

Re: [excel2007] Blocco macro

Postdi Anthony47 » 28/07/17 15:15

Esiste un solo evento Worksheet_Calculate; quindi nella stessa macro devi eseguire tutte le operazioni che ora vorresti eseguire separatamente.
Il modo piu' elementare e' di accodare i tre codici all'interno di una unica Sub Worksheet_Calculate:
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
  Codice1
  Codice2
  Codice3
End Sub

Ovviamente Codice1, Codice2 e Codice3 si intendono privi della riga iniziale (Private Sub Worksheet_Calculate) e della riga finale (End Sub).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel2007] Blocco macro

Postdi Cele79 » 30/07/17 06:59

Grazie Anthony47 per le rispost.
sono riuscito a risolvere il problema con questa macro:
Codice: Seleziona tutto
Private Sub Worksheet_Calculate()
If Not IsError(Range("BM4")) Then
    If Range("BK2") = Range("BL2") Then
        If Range("BJ4").Value <> Range("BM4").Value Then    '<< BJ4??
            Application.EnableEvents = False
            Range("BJ4").Value = Range("BM4").Value         '<< BJ4??
            Call CAMBIODATA
            Application.EnableEvents = True
           End If
         
           
If Not IsError(Range("CE4")) Then
    If Range("CC2") = Range("CD2") Then
        If Range("CC3").Value <> Range("CE4").Value Then
            Application.EnableEvents = False
            Range("CC3").Value = Range("CE4").Value
            Call CAMBIODATA2
            Application.EnableEvents = True
           End If
         
           
If Not IsError(Range("CW4")) Then
    If Range("CU2") = Range("CV2") Then
        If Range("CU3").Value <> Range("CW4").Value Then
            Application.EnableEvents = False
            Range("CU3").Value = Range("CW4").Value
            Call CAMBIODATA3
            Application.EnableEvents = True
           End If
      End If
     End If
    End If
   End If
  End If
 End If
End Sub
Cele79
Utente Senior
 
Post: 102
Iscritto il: 14/01/14 12:32


Torna a Applicazioni Office Windows


Topic correlati a "[excel2007] Blocco macro":


Chi c’è in linea

Visitano il forum: Nessuno e 65 ospiti