Usuário com melhor resposta
Como verificar o mês de fevereiro

Pergunta
-
Olá, alguns meses atrás eu abri uma pergunta para duplicar um registro em tabela e foi me passado um código pelo Prof Anderson e de pronto me atendeu. Mas como parei este projeto para poder executar outros projetos, e retomando este projeto, percebi que se eu coloco a data de por exemplo 29/01/2015 como primeiro vencimento e terei 3 parcelas ele faz assim:
segue a tebela
CODIGO ALUNO SERIE PARCELAS VALOR VENCIMENTO PAGO?
1000 XXX 1°ANO 1/3 100 29/01/2015 N
1000 XXX 1°ANO 2/3 100 29/03/2015 N
1000 XXX 1°ANO 3/3 100 29/04/2014 N
ou seja, ele pula o mês de fevereiro pois segundo a rotina ele compara as datas como segue abaixo e como resolver isso??
a rotina para gravação
Sub cadastrar()
Dim lin As Long
Dim myDate As Date
myDate = txtData.Text
dia = Day(txtData.Text)
lin = 2
While Sheets("Cadastro").Cells(lin, 1) <> ""
lin = lin + 1
Wend
'Call verificarCampos
For i = 0 To cboParcelas.List(cboParcelas.ListIndex) - 1
Sheets("Cadastro").Cells(lin, 1) = txtCodAluno.Text
Sheets("Cadastro").Cells(lin, 2) = UCase(txtNomeAluno.Text)
Sheets("Cadastro").Cells(lin, 3) = cboSerie.Text
Sheets("Cadastro").Cells(lin, 4) = "'" & i + 1 & "/" & cboParcelas.List(cboParcelas.ListIndex)
Sheets("Cadastro").Cells(lin, 5) = cboValor.Text
If i <> 0 Then
myDate = myDate + 30
End If
While Day(myDate) <> Day(txtData.Text)
myDate = myDate + 1
Wend
Sheets("Cadastro").Cells(lin, 6) = myDate
If txtPagamento = "" Then
txtPagamento = "N"
Sheets("Cadastro").Cells(lin, 7) = txtPagamento.Text
Else
Sheets("Cadastro").Cells(lin, 7) = UCase(txtPagamento.Text)
End If
lin = lin + 1
Next i
Call novoaluno
End Subobs.: Não tem como anexar o arquivo aqui???
Obrigado
Carlos Rodrigues de Souza - Analista de Suporte
Respostas
-
Carosouza,
da uma olhada nesse código e vê se te dá uma luz...
isso é apenas uma bases, você pode criar condições de, se for o mesmo mês, incrementar + 1 dia.... cria mais algumas regrinhas...
Sub teste() Dim qtdParcelas As Byte Dim strDataInicial As String Dim strDataParcela As String strDataInicial = "29/01/2015" qtdParcelas = 3 For parcela = 1 To qtdParcelas If parcela = 1 Then strDataParcela = strDataInicial Else strDataParcela = Format(CDate(strDataParcela), "#") + 30 End If Debug.Print "Parcela " & parcela & " - " & Format(strDataParcela, "dd/mm/yyyy") Next parcela End Sub
Resultado:
Natan
- Editado 'Natan Silva quinta-feira, 13 de novembro de 2014 20:22
- Marcado como Resposta Carosouza quinta-feira, 13 de novembro de 2014 21:58
Todas as Respostas
-
Carosouza,
da uma olhada nesse código e vê se te dá uma luz...
isso é apenas uma bases, você pode criar condições de, se for o mesmo mês, incrementar + 1 dia.... cria mais algumas regrinhas...
Sub teste() Dim qtdParcelas As Byte Dim strDataInicial As String Dim strDataParcela As String strDataInicial = "29/01/2015" qtdParcelas = 3 For parcela = 1 To qtdParcelas If parcela = 1 Then strDataParcela = strDataInicial Else strDataParcela = Format(CDate(strDataParcela), "#") + 30 End If Debug.Print "Parcela " & parcela & " - " & Format(strDataParcela, "dd/mm/yyyy") Next parcela End Sub
Resultado:
Natan
- Editado 'Natan Silva quinta-feira, 13 de novembro de 2014 20:22
- Marcado como Resposta Carosouza quinta-feira, 13 de novembro de 2014 21:58
-
Olá Natan, usei apenas a parte do if da sua resposta e funcionou de boa!
Muito obrigado
carosouza
Carlos Rodrigues de Souza - Analista de Suporte