CONTAR MESES

KELLY 26/12/2011 02:29:07
#391948
Bom dia turminha!

Estou com um problemão no meu trabalho e precisava urgente de ajuda!
Eu preciso criar uma função para retornar quantos meses em atraso tem uma determinada conta, eu já tentei usar o DATEDIFF mas não funciona porque assim que iniciar um novo mês ele já conta e eu queria que ele contasse quando chegar o mesmo dia do vencimento do mês anterior, por exemplo:

Conta com vencimento em 15/12/2011 só pode contar com um mês de atraso quando chegar no dia 15/01/2012, com o DATEDIFF ele já começa a contar a partir do dia 01/01/2012.

Qual a solução para esse tipo de problema?
LUIZCOMINO 26/12/2011 08:32:56
#391950
Resposta escolhida
Bom dia montei aqui uma função veja se era isso que vc precisava, para usar basta

DifencaMeses([Ô]11/04/2011[Ô],[Ô]11/04/2011[Ô])


[ô]============================================================
Function DifencaMeses(DataInicial As String, DataFinal As String) As String
[ô]Luiz Comino - 26/12/2011 - 08:30
Dim sDiferenca As String

If Not IsDate(DataInicial) Or Not IsDate(DataFinal) Then DifencaMeses = [Ô]0[Ô]: Exit Function

sDiferenca = DateDiff([Ô]m[Ô], DataInicial, DataFinal)

If val(sDiferenca) > 0 And Left(DataInicial, 2) = Left(DataFinal, 2) Then
DifencaMeses = sDiferenca

Else
DifencaMeses = [Ô]0[Ô]
End If

End Function
[ô]============================================
KELLY 26/12/2011 15:17:06
#391955
Luiz, esse código ficou parecido com o que eu fiz e está com o mesmo problema que e o meu, ele só conta quando o dia coincidir, enquanto não, ele marca só zero, tenta fazer um teste. Ele tem que continuar contando, por exemplo:
Vencimento 15/01/2012, vamos supor que hoje é 14/03/2012, então ele tem que contar só 1 mês em atraso porque falta mais 1 dia para vencer em março, eu também tive o mesmo problema que você.

Barros, eu tentei criar uma função e não está funcionando, onde estou errando?

Private Sub Command1_Click()
Me.Caption = ContarMeses([Ô]15/01/2012[Ô], [Ô]15/03/2012[Ô])
End Sub

Public Function ContarMeses(DataInicial As String, DataFinal As String) As Integer
Dim sDiferencaMes As String
Dim sDiferencaDia As String

sDiferencaMes = DateDiff([Ô]m[Ô], CDate(DataInicial), CDate(DataFinal)) - 1 [ô]Calcula a Diferença de Meses, menos 1
sDiferencaDia = DateDiff([Ô]d[Ô], CDate(DataInicial), CDate(DataFinal)) [ô]Calcula a Diferença em Dias

If sDiferencaDia > 30 Then [ô]Verifica se a Diferenca em dias é maior que 30
sDiferencaMes = sDiferencaMes + 1 [ô]Se for, Adiciona 1 à diferença
Else
sDiferencaMes = sDiferencaDia & [Ô] Dias[Ô] [ô]Caso contrário, retorna o total de dias
End If

ContarMeses = sDiferenca

End Function

Agradeço desde já por vocês estarem me dando essa força!!
LUIZCOMINO 26/12/2011 15:32:17
#391956
veja agora


[ô]============================

Function DifencaMeses(DataInicial As String, DataFinal As String) As String
[ô]Luiz Comino - 26/12/2011 - 08:30
Dim sDiferenca As String

If Not IsDate(DataInicial) Or Not IsDate(DataFinal) Then DifencaMeses = [Ô]0[Ô]: Exit Function

sDiferenca = DateDiff([Ô]m[Ô], DataInicial, DataFinal)

If Val(sDiferenca) > 0 And Val(Left(DataInicial, 2)) <= Val(Left(DataFinal, 2)) Then
If Not sDiferenca < 0 Then
DifencaMeses = sDiferenca
Else
DifencaMeses = [Ô]0[Ô]
End If
Else
If Not sDiferenca < 0 Then
DifencaMeses = sDiferenca - 1
Else
DifencaMeses = [Ô]0[Ô]
End If
End If

End Function
[ô]=======================================
KELLY 26/12/2011 16:05:15
#391957
Luiz, ficou 100% muito obrigado pela ajuda!!!!!!!
Tópico encerrado , respostas não são mais permitidas