Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro blocco righe modificate

Ultimo Aggiornamento: 04/01/2021 22:51
Post: 3
Registrato il: 16/10/2019
Età: 31
Utente Junior
2013
OFFLINE
04/01/2021 15:48



Buonasera,

come da titolo ho bisogno di aiuto per un foglio di lavoro contabile (prima nota) come quello in allegato dove vorrei che venissero bloccate le righe dove sia stata apportata una modifica.

Il foglio di calcolo in questione ha già una macro dove però blocca le singole celle modificare e questo è un problema perchè giorno dopo giorno lascia modificabili le celle vuote ed è per questo che vorrei bloccasse le righe in modo da non lasciare nessuna cella sbloccata della giornata modificata.

Nel foglio di calcolo dovrebbe esserci un password cartella di lavoro che ovviamente è difficilissima: Password 😂

Aggiungo che la cartella di lavoro originale è composta da poco meno di 50 fogli tutti con la stessa grafica della bozza che allego.

Sono aperto a qualsiasi tipo di consiglio per elaborare meglio la prima nota.

Ringrazio tutti per la disponibilità, purtroppo io non so fare macro anche se vorrei imparare perchè nel lavoro che faccio sarebbe molto utile conoscere queste cose.

Cordiali Saluti,

Michele G.
Post: 1.054
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
04/01/2021 16:49

Prova ad usare, come base di partenza, questa mia versione della tua macro Workbook_BeforeSave; le annotazioni le ho riportate nel codice. Notare che ho dovuto utilizzare una cella d'appoggio per riportare il conteggio delle celle compilate nelle varie giornate. 14 sono quelle fisse (formule comprese) e se D9 (scelta casualmente tra le tante libere) totalizza di più vuol dire che sono state compilate delle celle in quella giornata. Basta applicare il Colore nero al testo della cella per nascondere il numero.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim x      As Byte                            'contatore foglio
    Dim gg     As Long                            'contatore giornate nei mesi
    Dim ur     As Long                            'ultima riga utilizzata

    For x = 1 To Sheets.Count
        Sheets(x).Unprotect "Password"
        'calcolo quante righe presenti in colonna A che poi rappresenterà le diverse giornate nei vari mesi
        ur = Range("A" & Rows.Count).End(xlUp).Row
        For gg = 11 To ur Step 4                  '4 righe rappresentano una giornata
            'conto quante celle valorizzate e lo scrivo in D9
            Range("D9").FormulaLocal = "=Conta.Valori(B" & gg & ":R" & gg + 3 & ")"
            'se D9 > 14 allora ci sono celle compilate pertanto blocco la giornata
            If Range("D9") > 14 Then Range("B" & gg & ":R" & gg + 3).Locked = True
        Next gg
        Sheets(x).Protect "Password"
    Next x
    
End Sub

[Modificato da rollis13 04/01/2021 22:50]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 3
Registrato il: 16/10/2019
Età: 31
Utente Junior
2013
OFFLINE
04/01/2021 19:31


Ho modificato qualche cella in quanto nel file originale ho qualche dato in più e quindi la cella del conteggio era occupata.

Quando vado a modificare un giorno non completo e poi a salvare mi restituisce questo errore, per farlo funzionare devo rimuovere la protezione foglio e salvare ma questo renderebbe tutto vano.

La cosa strana è che nel file di bozza funziona con il foglio protetto invece nel file originale è come se il foglio protetto sia un problema.
[Modificato da MicheleGio 04/01/2021 21:48]
Post: 1.055
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
04/01/2021 22:01

C'è una criticità nella mia versione, mi sono scordato di adeguare il Riferimento dei Range considerando che nel file originale vi sono più fogli. Sostituisci la mia precedente con quest'altra. Noterai l'aggiunta del controllo del Riferimento al foglio in elaborazione.
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim x      As Byte                            'contatore foglio
    Dim gg     As Long                            'contatore giornate nei mesi
    Dim ur     As Long                            'ultima riga utilizzata

    For x = 1 To Sheets.Count
        With Sheets(x)
            .Unprotect "Password"
            'calcolo quante righe presenti in colonna A che poi rappresenterà le diverse giornate nei vari mesi
            ur = .Range("A" & .Rows.Count).End(xlUp).Row
            For gg = 11 To ur Step 4              '4 righe rappresentano una giornata
                'conto quante celle valorizzate e lo scrivo in D9
                .Range("D9").FormulaLocal = "=Conta.Valori(B" & gg & ":R" & gg + 3 & ")"
                'se D9 > 14 allora ci sono celle compilate pertanto blocco la giornata
                If .Range("D9") > 14 Then .Range("B" & gg & ":R" & gg + 3).Locked = True
            Next gg
            .Protect "Password"
        End With
    Next x
    
End Sub
[Modificato da rollis13 04/01/2021 22:11]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 4
Registrato il: 16/10/2019
Età: 31
Utente Junior
2013
OFFLINE
04/01/2021 22:08

Ho provato a rimuovere la protezione a tutti i fogli e salvare di nuovo tutto, non cambia nulla eppure password di blocco e di sblocco coincidono.

Post: 1.056
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
04/01/2021 22:11

Scusa, non ho fatto in tempo a modificare il mio post. Rivedi il mio precedente post.

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 5
Registrato il: 16/10/2019
Età: 31
Utente Junior
2013
OFFLINE
04/01/2021 22:20

Perfetto, adesso va senza intoppi, grazie ancora per il tuo aiuto.
Post: 1.057
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
04/01/2021 22:51

Grazie del riscontro positivo 👍.

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Vota: 15MediaObject5,0028 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | 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 08:52. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com