Asterix4you, nel messaggio
Post by Asterix4youGiovanni scusami e non mandarmi a quel paese.
Perché no?
Post by Asterix4youcome puoi notare non ci sono incrementi di 5 , quindi credo che lo
script che mi hai gentilmente compilato non si possa applicare.
E non vuoi proprio neanche far finta di aver provato a pensare di
tentare di aggiustarlo per adattarsi al problema?
Sai che una condizione semplice si può tradurre con il costrutto If
... Then ... Else ... End If, e una condizione multipla con Select
Case ... Case ... End Case, non ti manca nulla per poter risolvere il
problema.
O bisogna declinarti tutte le possibili combinazioni di tutte le
possibili condizioni?
Post by Asterix4youHai la soluzione finale?
Hai già scritto una possibile soluzione in italiano, si tratta solo di
sostituire ai costrutti italiani con quelli vba.
Per esempio:
Select Case Anni
Case 0 To 5
If SettimanaLunga Then
GiorniFerie = 26
Else
GiorniFerie = 30
End If
Case ....
...
End Case
e così via uguale per gli altri casi, mutati gli estremi
dell'intervallo e i giorni. Se ti fossi preso la briga di leggere
l'help del costrutto Select, sapresti che l'ultima condizione può
essere resa con:
Case Is > 25
If SettimanaLunga Then
...
Else
...
End If
End Case
Alternativamente, puoi naturalmente mettere il Select dentro l'If,
invece dell'If dentro il Select:
If SettimanaLunga Then
Select Case
Case 0 To 5
GiorniFerie = 26
...
End Case
Else
Select Case
Case 0 To 5
GiorniFerie = 30
...
End Case
End If
O ancora puoi usare una variabile Incremento:
Dim Incremento As Integer
...
Select Case Anni
Case 0 To 5
GiorniFerie = 26
Incremento = 4
...
Case Is > 25
GiorniFerie = 39
Incremento = 6
End Case
If SettimanaLunga Then
GiorniFerie = GiorniFerie + Incremento
End If
Ma potresti anche scrivere due funzioni distinte:
...
If SettimanaLunga Then
GiorniFerie = GiorniFerieLunga(Anni)
Else
GiorniFerie = GiorniFerieCorta(Anni)
End If
...
Function GiorniFerieLunga(Anni As Integer) As Integer
Select Case Anni
Case 0 To 5
GiorniFerie = 30
Case ...
...
End Case
End Function
Function GiorniFerieCorta(Anni As Integer) As Integer
Select Case Anni
Case 0 To 5
GiorniFerie = 26
Case ...
...
End Case
End Function
E forse altro ancora.
Evidentemente, qualunque di questi modi tu scelga, nel caso dovessero
cambiare gli estremi degli intervalli o i giorni per ogni intervallo
sei costretto a modificare il codice. Non mi sembra francamente il
caso di mettermi a spiegare come sarebbe possibile generalizzare il
problema.
Quanto al mandarti o no a quel paese, dipende tutto dall'entità del
compenso. Finora, francamente, la paga è assai modesta: il problema è
troppo semplice perché possa gratificarmi risolverlo, e neppure riesco
ad avere la soddisfazione di averti insegnato qualcosa. Voglio un
aumento.
Ciao.