Pagina precedente | 1 2 3 4 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

messaggio di errore con due celle piene

Ultimo Aggiornamento: 21/06/2020 09:46
Post: 631
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
07/01/2018 17:30

No, quelle celle vengono compilate/aggiornate dalla macro "minuti" e la loro mancata compilazione non ha nulla a che fare con il codice della macro "Private Sub Workbook_SheetChange" su cui ci siamo concentrati negli ultimi post.
Tutto quello che posso intuire che c'è qualcosa (fin dall'inizio) che non quadra nei conteggi nelle colonne nascoste colonne P:AI dove vi sono i conteggi che poi serviranno alla macro "minuti" per riportare i totali rielaborati nelle celle F10:H10.

Non potendo visionare il tuo file attuale, a naso, posso affermare con certezza, visto l'ultimo file che ho allegato dove ho fatto un sacco di pulizia, che potrebbe mancare il richiamo alla macro "minuti" che in precedenza si trovava in ogni foglio:
Private Sub Worksheet_Calculate()
    Call minuti
End Sub

Se così non fosse faccio un'altra considerazione sempre per intuito.

Quello che sicuramente non hai implemento da quando hai protetto i foglio è lo sblocco della protezione all'inizio della macro principale e successivo blocco prima del termine della macro.
Dovrai, pertanto, inserire in testa alla macro "minuti" subito dopo la dichiarazione delle variabili questo codice:
ActiveSheet.Unprotect

e prima dell' "End Sub" il codice:
ActiveSheet.Protect

Ed ancora, vedo che all'inizio della macro "minuti" nel mio file c'è un refuso ma forse non è stato preso in considerazione. Eventualmente, il codice:
Application.EnableEvents = True
mentre per disattivare il controllo degli eventi dovrebbe essere:
Application.EnableEvents = False

Detto questo credo che ora il richiamo alla macro "minuti" possa tolta da ogni foglio ed essere integrata nella macro "Private Sub Workbook_SheetChange" mettendo il richiamo in fondo prima dell' "End Sub" riscrivendo il codice così:
Option Explicit
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 
    Dim R As Long
     
    If ActiveSheet.Name <> "RIEP" And ActiveSheet.Name <> "codici servizi" Then     'escluso questi fogli
        R = Target.Row
        ' questo codice ti segnala con un messaggio se per sbaglio scrivi riposo nella colonna "I" con il codice 2-3-4
        If Not Intersect(Target, [I14:I57]) Is Nothing Then
            If Range("I" & R) = 2 Or Range("I" & R) = 3 Or Range("I" & R) = 4 Then
                MsgBox "Qui va messo solo codice presenza"
                Application.EnableEvents = False
                Target.ClearContents
                Application.EnableEvents = True
            End If
        End If
        ' questo codice ti da un messaggio di errore se per sbaglio metti riposo lo stesso giorno che hai lavorato
        If Intersect(Target, Uni0n(Range("C14:C57"), Range("J14:J57"))) Is Nothing Then GoTo fine     'cambiata
        Select Case Target.Column
            Case 2, 3
                If Range("J" & R) <> "" Then
                    MsgBox "Non puoi scrivere in questa cella se colonna J non è vuota"
                    Application.EnableEvents = False
                    Target.ClearContents
                    Application.EnableEvents = True
                    Exit Sub
                End If
            Case 10
                If Range("C" & R) <> "" Then
                    MsgBox "Non puoi scrivere in questa cella se colonna C non è vuota"
                    Application.EnableEvents = False
                    Target.ClearContents
                    Application.EnableEvents = True
                    Exit Sub
                ' se colonna A è colorata in questa cella puoi scrivere solo 3
                ElseIf Range("A" & R).DisplayFormat.Interior.ColorIndex <> xlColorIndexNone And Target <> 3 Then
                    MsgBox "Puoi scrivere solo 3 se colonna A è colorata"
                    Application.EnableEvents = False
                    Target.ClearContents
                    Application.EnableEvents = True
                    Exit Sub
                End If
        End Select
    End If
fine:                'aggiunta
    Call minuti      'aggiunta
    
End Sub


______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 2 3 4 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:13. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com