Condividi:        

Inserire commento su cella attiva 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

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 17/05/23 15:22

Buon pomeriggio, Anthony infatti non era risolto, in un primo tempo avevo fatto delle prove veloci sul file visto che ero ancora al lavoro, poi a casa mi sono accorto che i vari fogli che avevo provato non erano protetti, e pensavo a quel punto di risolvere mettendo in ogni foglio due pulsanti con codice per sproteggere e proteggere velocemente il foglio evitando il tasto destro formato celle ecc…, dopo mi sono accorto che avevi postato un’altra soluzione, comunque quel file mi servirà certamente in futuro come soluzione per altre cose, per quanto riguarda il tuo l’ultimo codice ho già fatto diverse verifiche in tutti i fogli e va benissimo così funziona alla grande, anche se sarebbe interessante provare magari a far eseguire il codice soltanto sulla griglia di celle che riguardano i giorni del mese, ma per me è già più che sufficiente così, credo di aver già approfittato abbastanza della vostra gentilezza e disponibilità, grazie per tutto l’aiuto e una buona serata a tutti.
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Sponsor
 

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 18/05/23 18:50

Il doppio-click va in crisi a causa della Convalida+Protezione foglio.

sarebbe interessante provare magari a far eseguire il codice soltanto sulla griglia di celle che riguardano i giorni del mese
Con questa modifica controlliamo che la riga 4 della colonna selezionata contenga un numero tra 1 e 31:
Codice: Seleziona tutto
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If IsError(Application.Match(Sh.Name, Array("Dati", "Riepilogo", "Foglio1"), False)) Then
    If IsNumeric(Cells(4, Target.Column)) Then
        If Cells(4, Target.Column) >= 1 And Cells(4, Target.Column) < 32 Then
            Sh.Unprotect "pippo12"
            Cancel = True
            Call Commento
            Sh.Protect "pippo12"
        End If
    End If
End If
End Sub

Non e' tutto, ma almeno non si corrompono le celle coi nominativi e i calcoli di fianco
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 19/05/23 07:43

Buon giorno, ancora grazie Anthony per l’aiuto, ho inserito il nuovo codice ma non succede niente ne con clic destro ne con doppio clic sia destro che sinistro, è come se non ci fosse alcun codice, ho soltanto sostituito il codice all'interno del modulo QuestaCartellaDiLavoro mantenendo sempre la Sub Commento nel Modulo Standard, una buone giornata a tutti
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 19/05/23 10:47

Come detto, la variante controlla che su riga 4 ci sia un numero e che il numero sia nell'intervallo 1-31; sviluppato e testato sul file che avevi pubblicato.
Le tue date sono sempre su riga 4? Confermi che sono dei "Numeri" e non stringhe o Date?
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 19/05/23 14:49

Buon pomeriggio, si Anthony le date sono sempre su riga 4 ma non so se si possono definire numeri perché vengono generate da un sistema di calcolo inserito nel foglio Dati (colonne nascoste AE-DH) e scegliendo l’anno dalla cella B2 dello stesso foglio Dati cambia il calendario annuo, comunque allego il file originale dove capirai meglio di quanto possa spiegare. Probabilmente sarà questo il motivo del non funzionamento, Una buona serata a tutti
Link al file
https://www.dropbox.com/scl/fi/7o2i6gkk ... vub34y222t
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi Marius44 » 19/05/23 16:34

Salve a tutti
Non sono "sparito" ma sono stato impegnato.
Mi riferisco all'ultimo messaggio di Lone Wolf per aggiungere che il "numero" a cui fa riferimento Anthony (ciao) non un integer compreso fra 1 e 31 bensi un Long (seriale) riveniente dal calcolo di una data.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 19/05/23 17:46

Essendo una data va usato IsDate e non IsNumeric; inoltre il secondo If si puo' eliminare. Quindi:
Codice: Seleziona tutto
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If IsError(Application.Match(Sh.Name, Array("Dati", "Riepilogo", "Foglio1"), False)) Then
    If IsDate(Cells(4, Target.Column)) Then         '<<<  IsDate e non IsNumeric
'        If Cells(4, Target.Column) >= 1 And Cells(4, Target.Column) < 32 Then
            Sh.Unprotect "pippo12"
            Cancel = True
            Call Commento
            Sh.Protect "pippo12"
'        End If
    End If
End If
End Sub
Le due righe commentate si possono eliminare

Inoltre sarebbe meglio gestire, nella Sub Commento, l'eventuale RightClick su una cella che GIA' contiene un commento
Se vuoi modificare il commento, allora secondo me la cosa piu' semplice e' usare OnError Resume Next:
Codice: Seleziona tutto
Sub Commento()
    On Error Resume Next
        ActiveCell.AddComment
    On Error GoTo 0
    ActiveCell.Comment.Visible = False
    ActiveCell.Comment.Text Text:="inviata: " & Now()
    Range("A1").Select
End Sub


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

Re: Inserire commento su cella attiva con macro

Postdi Marius44 » 19/05/23 20:37

Salve a tutti
Mi sono riletto tutti i posts. E’ vero che un lavoro già fatto non si smantella però mi chiedevo se ha senso avere 13/14 Fogli quando ne basterebbero 2:
1-Un foglio chiamiamolo “Primanota” nel quale inserire Data, Dipendente, tipo di assenza, giorni di assenza e, eventualmente, una colonna in cui calcolare la data di fine periodo (data inizio + giorni). Il tutto dovrebbe funzionare con VBA in base agli eventi Worksheet_Change e Worksheet_SelectionChange riferiti alle colonne Data e Giorni. Nelle colonne Dipendenti e Tipologia verrebbero inserite, sempre con VBA, le due Data Validation.
Lo stesso Foglio dovrebbe contenere 3 pulsanti: Mostra Riepilogo, Mostra Mese e Mostra Dipendente. Ognuno col proprio codice che mostrerebbe in altro Foglio i dati necessari.
2-Un secondo foglio dove mostrare quanto detto sopra.

Ciò eviterebbe l’attuale appesantimento del file a causa del numero dei Fogli e, principalmente, delle Data Validation nelle rispettive colonne per le righe necessarie.

Vero è che questo comporterebbe una “profonda revisione” del progetto attuale ma credo si avrebbe il vantaggio di una minore digitazione e conseguente riduzione di possibili errori. E non dimenticando che la protezione/sprotezione dei fogli sarebbe sicuramente più snella e senza intoppi.

Non vorrei sembrare un disfattista ma potrebbe essere una strada diversa.
Ciao a tutti e mi preparo “all’allerta rosso” previsto per questo weekend,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 19/05/23 20:48

Buona sera, Anthony è utilissima la possibilità di modificare il commento perché può capitare di dover sospendere le ferie o permessi vari per esigenze di servizio, e quindi molto utile la modifica inserendo nel commento “sospese per esigenze di servizio”, ma non riesco a capire come attivare la modifica, grazie e buona serata
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 19/05/23 21:10

Buona sera Mario ho visto adesso la tua proposta, se non ho capito male sarebbe qualcosa tipo un database, ti ringrazio ma non credo di essere capace di fare qualcosa del genere, con il VBA ci capisco pochissimo per non dire niente, con le formule magari qualcosa riesco a fare, tipo questo file in discussione, certo mi sarebbe piaciuto tantissimo studiare il VBA ma purtroppo è arrivato tardi per me che non ho ne l’età né il tempo per studiarlo, spero e auguro a tutti che l’allerta rosso si riveli soltanto una precauzione e non succeda più niente di brutto, una buona serata
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 20/05/23 14:19

Il codice della Sub Commento che ti ho dato ieri pomeriggio consente di ripetere il processo “tasto destro” cioè l’inserimento di un nuovo commento standard in sostituzione di un eventuale commento già presente.

Per “Modificare” il commento dovresti prima decidere l’interfaccia utente, cioe’ quali casi possono presentarsi e come gestirli.

Un possibile approccio:
-Tasto destro su una cella ancora senza commento: inserisce il commento standard
-Tasto dx su una cella già contenente commento: si aggiunge un ulteriore testo al commento presente
Per questo scopo:
a) modificare la Sub Workbook_SheetBeforeRightClick togliendo l’attuale Call Commento e inserendo invece
Codice: Seleziona tutto
Call CommentoDue

b) inserire questa Sub CommentoDue in un modulo standard del vba
Codice: Seleziona tutto
Sub CommentoDue()
Dim ccTxt As String, nxTxt
'
On Error Resume Next
ccTxt = ActiveCell.Comment.Text
On Error GoTo 0
'
If Len(ccTxt) > 0 Then
    nxTxt = Application.InputBox("Commento da Aggiungere", "Gestione Commento", , , , , , 2)
    If nxTxt <> False Then
        ActiveCell.Comment.Text ccTxt & Chr(10) & "> " & Replace(nxTxt, "§", Chr(10), , , vbTextCompare) & " - " & Now()
        ActiveCell.Comment.Visible = True
        ActiveCell.Comment.Shape.Select True
        Selection.AutoSize = True
        MsgBox ("Fatto")
        ActiveCell.Comment.Visible = False
    End If
Else
    ActiveCell.AddComment
    ActiveCell.Comment.Visible = True
    ActiveCell.Comment.Text Text:="Inviata: " & Now()
    ActiveCell.Comment.Shape.Select True
    Selection.AutoSize = True
    ActiveCell.Comment.Visible = False
    Range("A1").Select
End If
End Sub

Il testo da aggiungere sarà inserito tramite un InputBox, e verrà inserito su una nuova riga preceduto dal carattere “>” e seguito da Data-ora. E’ possibile inserire piu’ righe di commenti usando il carattere convenzionale “§”, che verrà convertito nel carattere “Nuova linea”.
Ad esempio se nell’inputbox scrivessi Commento aggiunto §su due righe esso sarà visualizzato come
Codice: Seleziona tutto
> Commento aggiunto
su due righe 20/05/2023 15:20

Ho inoltre aggiunto, nel caso di modifica del commento già presente, un MsgBox che consente di vedere il commento completo prima che venga nascosto.

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

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 21/05/23 20:32

Buona sera, Anthony ho inserito il nuovo codice è l’ho provato tante volte, va benissimo mi è piaciuta anche l’idea del MsgBox, provando gli inserimenti dei commenti ho pensato che poteva servire anche di dover cancellare il commento di una sola cella, così ho voluto provare a fare da me qualche codice aiutandomi con il registratore, ne ho create due che sembra funzionino una per la cancellazione di una sola cella e una per la cancellazione di tutta la griglia, inserendole in due pulsanti, ovviamente accetto consigli soprattutto sui codici, una buona serata a tutti

Questo è il link al file
https://www.dropbox.com/scl/fi/liszwe1v ... ii8ws8jd5a
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 21/05/23 21:04

Il MsgBox serve per mostrare il commento creato, altrimenti bisognava andare solo sulla fiducia.

Quanto alle nuove macro, il mio commento e': Se funzionano bene allora sono perfette
:D
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 21/05/23 21:47

Buona sera, Anthony per il momento funzionano e speriamo che continuano a funzionare altrimenti sarò costretto a chiedere ancora l’aiuto del forum :lol: , comunque per il momento non vedo altre migliorie da fare, quindi credo sia il momento di chiudere e ringraziare Mario e Anthony per la gentilezza la cortesia e il grosso aiuto ricevuto, una buona serata e grazie a tutto il forum
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Re: Inserire commento su cella attiva con macro

Postdi Anthony47 » 22/05/23 14:25

Fermo restando il concetto che "Se funziona bene allora è perfetta" ho guardato le macro.
Il mio suggerimento e' di inserire un MsgBox per confermare la volontà di ripulire. Ad esempio:
Codice: Seleziona tutto
Sub Cancellagriglia()
    ActiveSheet.Unprotect "pippo12"
    Range("B5:AF41").Select
    Dim Rispo
    Rispo = MsgBox("Confermi la pulizia dell'area Dati del foglio?", vbYesNo)
    If Rispo <> vbYes Then
        Beep
    Else
        Selection.ClearComments
        Selection.ClearContents
    End If
    ActiveSheet.Protect "pippo12"
    Range("A1").Select
End Sub

Approccio analogo puo' essere applicato alla Sub Cancellacommento

Per evitare di inserire 12 pulsanti "Cancella Commenti" e altrettanti per "Cancella griglia" potresti pensare di personalizzare la Barra di Accesso Rapido" insrendo due comandi per il lancio delle relative sub; per i suggerimenti su questa personalizzazione: viewtopic.php?f=26&t=103893&p=647679#p647679

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

Re: Inserire commento su cella attiva con macro

Postdi lone wolf » 24/05/23 20:33

Buona sera, Anthony scusa il ritardo ma non mi sono accorto subito del tuo nuovo suggerimento, comunque l’ho seguito subito e al quale ho anche aggiunto “Application.ScreenUpdating = False” ad inizio e fine macro, cambiando False con True alla fine perché nell’esecuzione della macro Cancellagriglia si visualizzava la selezione della griglia, per quanto riguarda la personalizzazione della Barra di accesso rapido mi sembra molto interessante e proverò con calma appena ho un po’ più di tempo libero per evitare di commettere errori, grazie ancora per l’aiuto e una buona serata a tutti
lone wolf
Utente Senior
 
Post: 108
Iscritto il: 23/05/15 14:59

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Inserire commento su cella attiva con macro":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti