Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Confronto più celle su più fogli con 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

Confronto più celle su più fogli con macro

Postdi nima » 23/05/21 16:53

Buongiorno,
al solito, dopo svariati tentativi eccomi qui a chiedere il vostro aiuto.
Questa volta per semplicità ho allegato un file:

https://www.dropbox.com/scl/fi/j7xwzd4h ... ii6h1bajs2

Nel file per semplicità c’è un solo foglio ma nell'originale ce ne sono 12 uno per ogni mese.
In sostanza la macro deve: prima di chiudere il file, salvarlo o stamparlo controllare che ....se nelle colonne gialle (numerate da 1 a 5) c’è un numero, nella colonna 6 al rigo corrispondente deve essere presente una nota quindi un testo che può essere anche alfanumerico.
Se nella colonna 6 è presente la nota si può procedere con la chiusura, stampa, o salvataggio.... altrimenti deve comparire semplicemente un messaggio dove si ricorda di compilare le note è chiaramente una volta dato OK il cursore deve essere indirizzato alla cella dove mancano le note.
Grazie per l’aiuto!
nima
Utente Junior
 
Post: 18
Iscritto il: 14/01/16 16:38

Sponsor
 

Re: Confronto più celle su più fogli con macro

Postdi Anthony47 » 24/05/21 11:07

Ma questi controlli sono da fare mentre i fogli vengono compilati, non a posteriore... Né ha senso che a Maggio si vada a controllare se il mese di Gennaio era compilato correttamente...

La mia proposta:
A) sui fogli mennsili metti una formattazione condizionale che evidenzi le righe Q che devono ancora essere compilate:
-selezioni Q8:S38
-imposti la formattazione condizionale con la formula
Codice: Seleziona tutto
=(CONTA.VALORI($L8:$P8)>0)*($Q8="")

-come formato scegli lo sfondo Rosso
In questo modo se le colonne L:P sono compilate e la colonna Q e' vuota la cella di colonna Q si colorera' di rosso

B) come ulteriore possibilita' di controllo, in una cella libera dei fogli mensili, io ho usato Z1, conta quante righe in Q8:Q38 sono in anomalia, tramite la formula
Codice: Seleziona tutto
=SOMMA(--((LUNGHEZZA(L8:L38&M8:M38&N8:N38&O8:O38&P8:P38)>0)*(Q8:Q38="")))
La formula e' da confermare tramite la combinazione Contr-Maiusc-Enter, non il solo Enter

A questo punto si fa il controllo su Salva e su Stampa, inserendo sul modulo Questa_cartella_di_lavoro del progetto vba questo codice:
Codice: Seleziona tutto
Dim shErr As Boolean

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Call CkFogli
Cancel = shErr
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call CkFogli
Cancel = shErr
End Sub


Sub CkFogli()
Dim CK As Long
'
shErr = False
CK = CkZ1("Z1")
If CK <> 0 Then
    Sheets(CK).Select
    MsgBox ("Ci sono errori su foglio da correggere")
    shErr = True
End If
End Sub


Function CkZ1(Optional ByVal aaDDR As String = "Z1") As Long
Dim NoCheck, I As Long
'
NoCheck = Array("Foglio1", "Sommario", "FoglioPippo")   '<<< i Nomi foglio da ignorare
'
For I = ThisWorkbook.Worksheets.Count To 1 Step -1
    If IsError(Application.Match(Sheets(I).Name, NoCheck, False)) Then
        If Sheets(I).Range(aaDDR).Value <> 0 Then
            CkZ1 = I
            Exit Function
        End If
    End If
Next I
End Function


Il modulo deve essere vuoto; se invece e' gia' presente del codice allora pubblicalo perche' dobbiamo verificare la compatibilita' con questo codice.

In questo modo:
-durante la compilazione dei moduli l'utente ha una indicazione visuale che qualcosa non va
-se prova a Salvare o Stampare allora viene fatto un controllo di Z1 dei fogli di lavoro, e se Z1 indica un valore diverso da Zero quel foglio viene selezionato e un messaggio avverte che ci sono degli errori da recuparare.
Nel codice della Sub CkFogli c'e' la possibilita' di dichiarare i nomi dei fogli che non devono essere controllati (vedi istruzione marcata <<<)

Ciao

PS: non ho trovato nessuna correlazione tra questo quesito e la discussione precedente a cui l'avevi accodato (viewtopic.php?f=26&t=111937), l'ho quindi trasformato in una nuova discussione.
Avatar utente
Anthony47
Moderatore
 
Post: 17650
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Confronto più celle su più fogli con macro":


Chi c’è in linea

Visitano il forum: Marius44 e 48 ospiti