Condividi tramite

evitare doppi assegnazioni in agenda

Anonimo
2021-08-19T13:37:50+00:00

ho un'agenda excel con in colonna A i clienti e nelle successive i giorni, in cui viene inserita la risorsa rappresentato da un colore di riempimento con motivo. Mi sono fatto con molta fatica perchè non esperto una routine che mi conta gli impegni di ogni risorsa sempre per il colore di riempimento. Ora mi piacerebbe avere modo, nel momento che inserisco il colore di una risorsa già impegnata in quel giorno, di ricevere un alert per evitare la sovrapposizione. Se può essere utile allego routine di conteggio (se poi è migliorabile.....)

Function cellsetting(InRange As Range, CellRange As Range) As Long
Dim cl As Range, TempCount As Long, ColorIndex As Long, pattern As Long, PatternColorIndex As Long

ColorIndex = CellRange.Cells(1.1).Interior.ColorIndex  
pattern = CellRange.Cells(1.1).Interior.pattern  
PatternColorIndex = CellRange.Cells(1.1).Interior.PatternColorIndex  
 

TempCount = 0
For Each cl In InRange
If ((cl.Interior.ColorIndex = ColorIndex And (cl.Interior.pattern = pattern And (cl.Interior.pattern <> xlPatternAutomatic Or cl.Interior.pattern <> xlPatternNone)) And cl.Interior.PatternColorIndex = PatternColorIndex)) Then
TempCount = TempCount + 1
Else: TempCount = TempCount
End If
Next cl

Set cl = Nothing  
  
cellsetting = TempCount  
  

End Function

grazie

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2021-08-20T11:21:28+00:00

Ciao Massimo,

https://1drv.ms/x/s!Ahjd5nHUaqHiiEXyCZVxMi52S3tk?e=1sjC6z ecco il link. praticamente io inserisco in corrispondenza di un lavoro e di una data il colore di una risorsa e vorrei che se in quella data la persona è già impegnata mi dia un alert.

Ti ricordo che i colori possono essere differenti per colore di riempimento, motivo ecolore del motivo

Penso che ci sia un problema intrinseco con il tuo approccio perché il cambiamento di colore (o motivo) di una cella non attiva un evento gestibile in Excel. Di conseguenza, non è possibile generare direttamente un avviso quando viene inserito o modificato un colore.

Suggerirei quindi un approccio diverso: invece di inserire un colore/motivo, inserisci un codice per ogni risorsa e crea un formato condizionale per ogni risorsa. Questo formato condizionale può inserire il colore/motivo desiderato e nascondere il codice imponendo un colore del carattere bianco.

In questo modo si possono ottenere gli avvisi richiesti come segue:

  • Fai clic dx sulla linguetta del foglio Program
  • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
  • Incolla il seguente codice:

'========>>

Option Explicit

'-------->>

Private Sub Worksheet_Change(ByVal Target As Range)

Dim RngLavori As Range, Rng As Range, Rng2 As Range 

Const sRighe\_Lavori\_In\_Corso As String = "5:55" 

Set RngLavori = Me.Range(sRighe\_Lavori\_In\_Corso) 

Set Rng = Intersect(RngLavori, Target) 

If Not Rng Is Nothing Then 

Set Rng2 = Intersect(RngLavori, Target.EntireColumn) 

    If Application.CountIf(Rng2, Target.Value) &gt; 1 Then 

        Call MsgBox(Prompt:="Attenzione ! La persona è già impegnata!", \_ 

            Buttons:=vbCritical, \_ 

            Title:="PROBLEMA") 

            Target.Select 

    End If 

End If 

End Sub

'<<========

Per quanto riguarda la tua funzione cellsetting, forse potresti provare la seguente versione modificata:

'-------->>

Public Function CellSetting(InRange As Range, CellRange As Range) As Long

Dim cl As Range 

Dim TempCount As Long, ColorIndex As Long, pattern As Long, PatternColorIndex As Long 

With CellRange.Cells(1).Interior 

    ColorIndex = .ColorIndex 

    pattern = .pattern 

    PatternColorIndex = .PatternColorIndex 

End With 

For Each cl In InRange.Cells 

    With cl.Interior 

        If .ColorIndex = ColorIndex \_ 

            And .pattern = pattern \_ 

            And .pattern &lt;&gt; xlPatternAutomatic \_ 

            And .pattern &lt;&gt; xlPatternNone \_ 

            And .PatternColorIndex = PatternColorIndex Then 

            TempCount = TempCount + 1 

        End If 

    End With 

Next cl 

 CellSetting = TempCount 

End Function

'<<========

===

Regards,

Norman

Immagine

La risposta è stata utile?

0 commenti Nessun commento

16 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2021-08-20T07:29:23+00:00

    https://1drv.ms/x/s!Ahjd5nHUaqHiiEXyCZVxMi52S3tk?e=1sjC6z ecco il link. praticamente io inserisco in corrispondenza di un lavoro e di una data il colore di una risorsa e vorrei che se in quella data la persona è già impegnata mi dia un alert.

    Ti ricordo che i colori possono essere differenti per colore di riempimento, motivo ecolore del motivo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2021-08-19T22:45:44+00:00

    devi solo cliccare con il tasto destro e poi condividi e cliccare condividi tramite link come c'é scritto qui

    https://support.office.com/it-it/article/condiv...

    segui la guida sotto a

    Come si vuole eseguire la condivisione?

    dopodiché devi condividere il link qui sulla community in un post

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2021-08-19T21:52:53+00:00

    ok, il file è su One Drive (che non ho mai usato prima) - adesso mi chiede dove mandarlo: cosa scrivo?

    cao

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2021-08-19T16:02:14+00:00

    Ciao Massimo,

    qui Daniele, bentrovato nella community Microsoft,

    in questi casi e' buona norma pubblicare un file di esempio esente di dati sensibili così da poterti aiutare sul tuo specifico problema senza perdere tempo a creare qualcosa di simile che magari non è adatto al tuo scopo.
    Puoi caricarlo per esempio su qualche sito di upload oppure condividendolo tramite OneDrive.

    Vedi il link di seguito per sapere come fare per condividere tramite OneDrive:

    https://support.office.com/it-it/article/condiv...

    Aspetto il file per poterti aiutare più velocemente.

    La risposta è stata utile?

    0 commenti Nessun commento