CONTAR MESES
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?
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?
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
[ô]============================================
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
[ô]============================================
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!!
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!!
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
[ô]=======================================
[ô]============================
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
[ô]=======================================
Luiz, ficou 100% muito obrigado pela ajuda!!!!!!!
Tópico encerrado , respostas não são mais permitidas