in particolare a flash
Avrei bisogno di modificare una macro che mi creasti qualche mese fa sui turni.
la macro è la seguente:
- Codice: Seleziona tutto
Sub PrgTurni()
strPassword = ""
ActiveSheet.Unprotect Password:=strPassword
NomeF = ActiveSheet.Name
Set Ws1 = Worksheets(NomeF)
UCT = Ws1.Range("IV2").End(xlToLeft).Column
URT = Ws1.Range("A" & Rows.Count).End(xlUp).Row
Rep = ""
Ws1.Range("B14:O53").Interior.ColorIndex = xlNone
For RRT = 14 To 53
For CCT = 2 To UCT
If UCase(Ws1.Cells(RRT, CCT).Value) <> "NO" Then
Ws1.Cells(RRT, CCT).ClearContents
End If
Next CCT
Next RRT
For ColT = 2 To UCT
Turno = "10-15"
If ColT Mod 2 = 1 Then Turno = "15-20"
For RRL = 5 To 9
Select Case RRL
Case 5
Colore = 6
Rep = "a"
Case 6
Colore = 50
Rep = "b"
Case 7
Colore = 41
Rep = "c"
Case 8
Colore = 15
Rep = "d"
Case 9
Colore = 8
Rep = "e"
End Select
NumP = Ws1.Cells(RRL, ColT).Value
For RT = 1 To NumP
If RT = 1 Then
If Ws1.Cells(RRL + 9, ColT).Value = "" Then
Ws1.Cells(RRL + 9, ColT).Value = Turno & Rep
Ws1.Cells(RRL + 9, ColT).Interior.ColorIndex = Colore
Else
Ws1.Cells(RRL + 14, ColT).Value = Turno & Rep
Ws1.Cells(RRL + 14, ColT).Interior.ColorIndex = Colore
End If
Else
Ripr:
RCas = Int(Rnd(30) * 30) + 24
If UCase(Mid(Ws1.Cells(RCas, 1).Value, 1, 4)) <> "COLL" Then GoTo Ripr
MyC = Evaluate("=Min(" & NomeF & "!P24:P" & URT & ")")
If Ws1.Cells(RCas, 16).Value <> MyC Or Ws1.Cells(RCas, ColT).Value <> "" Then GoTo Ripr
If Turno = 2 And Ws1.Cells(RCas, ColT - 1).Value <> "" And UCase(Ws1.Cells(RCas, ColT - 1).Value) <> "NO" Then GoTo Ripr
Ws1.Cells(RCas, ColT).Value = Turno & Rep
Ws1.Cells(RCas, ColT).Interior.ColorIndex = Colore
End If
Next RT
Next RRL
Next ColT
ActiveSheet.Protect Password:=strPassword
End Sub
Avrei bisogno di due cose:
1)
che la macro in caso di bisogno da il turno sia 10-15 che 15-20 alla stessa persona.
Attualmente la macro si blocca quando le richieste di mattina + quelle del pomeriggio sono > del numero collaboratori disponibili.
Attenzione a questo passaggio:
Le richieste attualmente sono maggiori del numero collaboratori disponibili perchè la macro non assegna allo stesso collaboratore il turno sia di mattina che di pomeriggio. (Quindi anche se il collaboratore di pomeriggio è disponibile, la macro non gli assegna il turno e si blocca)
Ho pensato che forse questo accade perchè vuole distribuire in maniera uniforme i turni a tutti i collaboratori.
Se il problema è questo, puoi anche disabilitare questa funzione, l'importante è che non si blocca la macro.
2)
Non far bloccare la macro.
Quando si blocca la macro, devo chiudere Excel e ricominciare tutto d'accapo inserendo dinuovo le non disponibilità e le impostazioni.
Grazie a tutti.
EDIT Flash30005 - Inserito Tag sul codice macro: è opportuno inserire sempre i Tag dell'editor in questo caso "Code" per codici macro.