none
Como verificar o mês de fevereiro RRS feed

  • 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 Sub

    obs.: Não tem como anexar o arquivo aqui???

    Obrigado 


    Carlos Rodrigues de Souza - Analista de Suporte

    quinta-feira, 13 de novembro de 2014 19:50

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
    quinta-feira, 13 de novembro de 2014 20:17

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
    quinta-feira, 13 de novembro de 2014 20:17
  • 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

    • Marcado como Resposta Carosouza quinta-feira, 13 de novembro de 2014 21:58
    • Não Marcado como Resposta Carosouza quinta-feira, 13 de novembro de 2014 21:58
    quinta-feira, 13 de novembro de 2014 21:57