Questito 1:
In questo forum ho trovato una formula di Tribuno sul calcolo dei riposi e permessi "sistema di lavoro 6+1+1" che ho modificato un pochino alla mie esigenze.
Però ciò che avrei di bisogno è questo:
in un Userform ho inserito una TextBox9 dove al suo interno dovrò digitare la data da cui calcolarmi i giorni di riposo e permesso ,ed un
pulsante "inserisci Riposi/Permessi".
Poichè ogni foglio è associato al nome di un dipendente "es. Rossi_Mario, Brambilla_Michele,ecc...", vorrei che quando effettuo la scelta dalla combobox2 - il nome
del dipendente- " che equivale al suo foglio" ed inserisco la data nella Textbox9, vada a calcolarmi e registrarmi i riposi e permessi nel foglio scelto
dalla Combobox2. La data che inserisco nella Textbox9, deve anch'essa essere registrata nel foglio scelto dalla Combo2, nella cella K1.
Altrimenti dovrei creare tanti moduli e pulsanti quanto sono i fogli dipendenti "un disastro".
La formula di Tribuno:
- Codice: Seleziona tutto
Sub Crea_Riposi_Permessi()
Application.ScreenUpdating = False
Check = 0 ' 0
For y = 2 To 3 ' foglio scelto (3) che equivale al foglio di Brambilla_Michele
Primo = Sheets("Brambilla_Michele").Range("k1") ' dalla data inserita nella cella K1, calcola il primo riposo e permesso
i = 4
Do While IsDate(Sheets(y).Cells(i, 1))
If Sheets(y).Cells(i, 1) >= Primo Then
If Sheets(y).Cells(i, 1) / 8 - Primo / 8 = Int(Sheets(y).Cells(i, 1) / 8 - Primo / 8) Then
If IsDate(Sheets(y).Cells(i, 1).Value) Then Sheets(y).Cells(i, 6) = "Riposo" ' per scrivere nella colonna 2 sostituire 6 con 2
If IsDate(Sheets(y).Cells(i + 1, 1).Value) Then Sheets(y).Cells(i + 1, 6) = "Permesso" ' per scrivere nella colonna 2 sostituire 6 con 2
End If
End If
i = i + 1
Loop
Next y
Application.ScreenUpdating = True
End Sub
Quesito 2:
Se inserisco i riposi e permessi nella colonna 2 "B", del foglio dipendente scelto dalla Combobox2, quando vado per inserire dei dati, me li inserisce
dall'ultima riga libera dopo l'ultimo riposo e permesso inserito. Come mai? dove sbaglio?
Quello che avrei di bisogno e che scrivesse i dati dalla prima riga libera. Es. Se in B4 ho Riposo in B5 Permesso deve inserirmi i dati dalla prima riga libera
che in questo caso e B6.
Incollo qui il codice della Combobox2:
- Codice: Seleziona tutto
Private Sub ComboBox2_Change()
Dim uv As Integer, i As Integer ' i
On Error Resume Next
UserForm1.Caption = ComboBox2.Text
For i = 1 To ThisWorkbook.Sheets.Count ' 1
If Sheets(i).Name = ComboBox2 Then
uv = Sheets(i).Range("B" & Rows.Count).End(xlUp).Row
If uv >= 34 Then
Me.TextBox5 = "Turno completo"
Me.TextBox6 = Sheets(i).Cells(35, 5)
Me.TextBox10 = Sheets(i).Cells(2, 2)
Me.Textbox8 = Sheets(i).Cells(2, 2)
Else
Me.TextBox5 = Sheets(i).Range("A" & uv + 1).Text
Me.TextBox6 = Sheets(i).Cells(35, 5)
Me.TextBox10 = Sheets(i).Cells(2, 2)
Me.Textbox8 = Sheets(i).Cells(2, 2)
Exit For
End If
End If
Next i
End Sub
Grazie a tutti.....