O código é muito extenso. Vou por uma parte deles
If j = 0 Then
'TODOS: Horas Extras/Noturnas/Ref.DSR
dblHrsEN = Nz(DSum("CalcDH + DsrDH", "qryMedias(RefDSR)", strWhere1 & "AND Not IsNull(TipoDH)"), 0)
'TODOS: Médias em Moeda + DSR
curMoed1 = Nz(DSum("ValorMoeda + DsrMoeda", "qryMedias(RefDSR)", strWhere1), 0)
Set rs3 = CurrentDb.OpenRecordset("SELECT CodTrabalhador,HrTrabMes,FormaPgto,Contrato " & _
"FROM tblTrabalhador WHERE CodTrabalhador =" & iTrab, dbReadOnly)
'Mensal/Quinzenal (Mensalista/Quinzenalista) = 10
If rs3!FormaPgto = conMQ And rs3!Contrato = conMen Then 'Or rs3!FormaPgto = conMQ And rs3!Contrato = conHor Then
curMoed2 = Nz(DSum("Valor", "qryMedias", strWhere1 & "AND Medias = True"), 0)
dblDias = 0
dblHras = 0
curX = salario(3, iTrab, iComp)
curY = (((salario(5, iTrab, iComp) * dblHrsEN) + curMoed1 + curMoed2) / j)
'MsgBox "Salario = " & salario(5, iTrab, iComp) & Chr(13) & "dblHrsEN = " & dblHrsEN & Chr(13) & _
"curMoed1 = " & curMoed1 & Chr(13) & "curMoed2 = " & curMoed2 & Chr(13) & "j = " & j Exit Function
'Semanal(Horista/Diarista) = 20
ElseIf rs3!FormaPgto = conMQ And rs3!Contrato = conHor Or _
rs3!FormaPgto = conS And rs3!Contrato = conDia Or _
rs3!FormaPgto = conS And rs3!Contrato = conHor Then
curMoed2 = Nz(DSum("Valor + DsrMoeda", "qryMedias", strWhere1 & "AND IsNull(TipoDH)"), 0)
dblDias = Nz(DSum("RefVr1 + DsrDH", "qryMedias", strWhere1 & "AND TipoDH = 'D'"), 0)
dblHras = Nz(DSum("RefVr1 + DsrDH", "qryMedias", strWhere1 & "AND TipoDH = 'H'"), 0)
curX = ((salario(5, iTrab, iComp) * dblHras) + (salario(4, iTrab, iComp) * dblDias)) / j
curY = (((salario(5, iTrab, iComp) * dblHrsEN) + curMoed1 + curMoed2) / j)
'Mensal/Quinzenal/Semanal(Comissionista) = 30
ElseIf rs3!Contrato = conCom Then
curMoed2 = Nz(DSum("Valor + DsrMoeda", "qryMedias", strWhere1 & "AND IsNull(TipoDH)"), 0)
y1 = (curMoed1 + curMoed2) / j 'Base de Cálculo para 13º Salário
y2 = y1 / rs3!HrTrabMes 'Valor Hora
y3 = y2 / 30 'Valor Dia
dblHras = Nz(DSum("RefVr1 + DsrDH", "qryMedias", strWhere1 & "AND TipoDH = 'H'"), 0)
dblDias = Nz(DSum("RefVr1 + DsrDH", "qryMedias", strWhere1 & "AND TipoDH = 'D'"), 0)
curX = y1 + (((dblHrsEN + dblHras) / j) * y2) + ((dblDias / j) * y3)
curY = 0
End If
'Rubricas da Rescisão para cálculo das médias
If Not IsNull(iResci) Then curMedResc = Nz(DSum("Valor", "qryResci_Verbas", "CodRescisao1=" & _
iResci & "AND Medias = True"), 0) / j
End If
Select Case intVal
'Diferente para cada cateroria de trabalhador...
Case 1 'Valor do 13º Salário
mediasDTer = curX
Case 2 'Médias
mediasDTer = curY
Case 3 'Contador de Avos (15 ou mais dias trabalhados): em caso de meses anteriores a dezembro,
'acrescenta a diferença. J é a quantidade de avos calculados
mediasDTer = j + 12 - Month(datFim)
Case 4 'Contador de Avos (15 ou mais dias trabalhados) para Rescisão
mediasDTer = j
Case 5 'Valor das Médias para Rescisão
mediasDTer = curY + curMedResc
End Select