Ir para conteúdo
Fórum Script Brasil
  • 0

código em vba que compara dois períodos


pedrolantin

Pergunta

Boa tarde, pessoal. Estou há dias quebrando a cabeça com uma rotina e gostaria da ajuda de vocês.
Fiz uns formulários que serão utilizados em uma clínica. Um desses formulários é o de fluxo de caixa. Nele é possível inserir despesas e ver o total de despesas por período (período que o usuário digita em 2 textbox). Isso funcionou certinho porque a inserção da despesa é em 1 dia, ficando fácil a comparação entre datas.

O que não estou conseguindo fazer é um código que retorne as receitas, haja vista que a clínica tem planos individual, mensal, trimestral e semestral. Explicando melhor:
Quando se faz o cadastro do paciente, se escolhe o plano no formulário (combobox) e se insere a data de início do serviço. Um código automaticamente calcula a data de fim (1 mês, 3 meses ou 6 meses) e registra isso numa planilha.
A rotina das receitas, então, deve ir nessa planilha, verificar se as datas de início e fim do serviço estão dentro do período digitado pelo usuário em 2 textbox (um para início e outra para data do fim do período). Uma vez que retorne um valor verdadeiro, deve verificar o plano: Se é trimestral e o período inserido pelo usuário é de um mês, deve pegar o valor total pago e dividir por 3.. se o período inserido é de 2 meses, deve pegar o valor total, dividir por 3 e então multiplicar por 2.. se o período for igual a 3 meses ou mais, retorna o valor total pago.
Há solução para isso?
Desde já agradeço.

OBS; segue abaixo o que tentei fazer

Private Sub CmbBuscar3_Click()
   
    If TxtDataInicio2.Text <> "" And TxtDataFim2.Text <> "" Then 'datainicio2 e datafim2 são os txtbox para inserção, pelo usuários, do período desejado
        periodo = DateDiff("m", DateValue(TxtDataInicio2.Value), DateValue(TxtDataFim2.Value))
    Else
        MsgBox "Digite uma data de início e fim para a pesquisa"
        GoTo Rotulo1
    End If
    
nalunos = Sheets("ALUNOS").Cells(Rows.Count, 1).End(xlUp).Row
dinheiro = 0
debito = 0
credito = 0
Total = 0

    For i = 2 To nalunos
        If DateValue(TxtDataInicio2.Value) <= Sheets("ALUNOS").Cells(i, "N") And DateValue(TxtDataInicio2.Value) <= Sheets("ALUNOS").Cells(i, "O") And DateValue(TxtDataFim2.Value) >= Sheets("ALUNOS").Cells(i, "O") And DateValue(TxtDataFim2.Value) >= Sheets("ALUNOS").Cells(i, "N") Then
            If Sheets("ALUNOS").Cells(i, "J") = "Trimestral" Then
                If periodo <= 1 Then

                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 3)
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 3)
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 3)
                        GoTo continue
                    End If
                End If
                
                If 1 < periodo And periodo <= 2 Then

                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 3) * 2
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 3) * 2
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 3) * 2
                        GoTo continue
                    End If
                End If

                If periodo > 2 Then

                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + Sheets("ALUNOS").Cells(i, "L")
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + Sheets("ALUNOS").Cells(i, "L")
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + Sheets("ALUNOS").Cells(i, "L")
                        GoTo continue
                    End If
                End If
                                    
            End If
            
            If Sheets("ALUNOS").Cells(i, "J") = "Semestral" Then
                If periodo <= 1 Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + Sheets("ALUNOS").Cells(i, "L") / 6
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + Sheets("ALUNOS").Cells(i, "L") / 6
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + Sheets("ALUNOS").Cells(i, "L") / 6
                        GoTo continue
                    End If
                End If
                
                If 1 < periodo And periodo <= 2 Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 2
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 2
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 6) * 2
                        GoTo continue
                    End If
                End If
                
                If 2 < periodo And periodo <= 3 Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 3
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 3
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 6) * 3
                        GoTo continue
                    End If
                End If
                
                If 3 < periodo And periodo <= 4 Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 4
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 4
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 6) * 4
                        GoTo continue
                    End If
                End If
                
                If 4 < periodo And periodo <= 5 Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 5
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L") / 6) * 5
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L") / 6) * 5
                        GoTo continue
                    End If
                End If
                
                If 5 < periodo Then
                
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                        credito = credito + (Sheets("ALUNOS").Cells(i, "L"))
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                        debito = debito + (Sheets("ALUNOS").Cells(i, "L"))
                        GoTo continue
                    End If
                    
                    If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                        dinheiro = dinheiro + (Sheets("ALUNOS").Cells(i, "L"))
                        GoTo continue
                    End If
                End If
            
            End If
        
            If Sheets("ALUNOS").Cells(i, "J") = "Individual" Then
                If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                    credito = credito + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
                
                If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                    debito = debito + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
                
                If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                    dinheiro = dinheiro + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
            
            End If
            
            If Sheets("ALUNOS").Cells(i, "J") = "Mensal" Then
                If Sheets("ALUNOS").Cells(i, "M") = "Cartão Crédito" Then
                    credito = credito + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
                
                If Sheets("ALUNOS").Cells(i, "M") = "Cartão Débito" Then
                    debito = debito + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
                
                If Sheets("ALUNOS").Cells(i, "M") = "Dinheiro" Then
                    dinheiro = dinheiro + Sheets("ALUNOS").Cells(i, "L")
                    GoTo continue
                End If
            
            End If
            
        End If
continue:
    Next

Total = credito + debito + dinheiro

TxtReceitas.Text = "Receita em cartão de crédito: R$ " & credito & vbCrLf	'txtreceitas é onde irá retornar os cálculos
TxtReceitas.Text = TxtReceitas.Text & "Receita em cartão de débito: R$ " & debito & vbCrLf
TxtReceitas.Text = TxtReceitas.Text & "Receita em dinheiro: R$ " & dinheiro & vbCrLf
TxtReceitas.Text = TxtReceitas.Text & "Receita Total: R$ " & Total & vbCrLf

Rotulo1:

End Sub

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
1 hora atrás, Alyson Ronnan Martins disse:

Desculpa mais não consegui entendeu o seu problema. -.-"

O período não esta conseguindo ser encontrado na planilha?

Boa noite, Alyson.
O código retorna valores errados e eu não identifiquei onde está o erro.
Eu imagino que deve estar nessa condicional abaixo, mas já tentei de outras maneiras e também não deu.

If DateValue(TxtDataInicio2.Value) <= Sheets("ALUNOS").Cells(i, "N") And DateValue(TxtDataInicio2.Value) <= Sheets("ALUNOS").Cells(i, "O") And DateValue(TxtDataFim2.Value) >= Sheets("ALUNOS").Cells(i, "O") And DateValue(TxtDataFim2.Value) >= Sheets("ALUNOS").Cells(i, "N") Then



Tentando explicar melhor a situação: Imagine que numa planilha tenha uma coluna com tipo de plano do cliente (mensal, trimestral, semestral), outra com data de início e outra com data de fim.
Um usuário do programa irá acessar um formulário no qual irá digitar um período para o qual quer saber o quanto de dinheiro entrou na clínica (01/02/2019 a 28/02/2019, por exemplo).
O código, então, tem que pegar essa data digitada pelo usuário e comparar com as datas de início e fim do plano escolhido pelo cliente.
Se o plano estiver dentro da validade, irá somar os valores pagos (com a ressalva abaixo), mas dependendo do plano, não é o valor total pago, mas uma parcela dele (como explicado na ressalva).

Ressalva: Se um cliente se matricula em 01/02/2019 num plano trimestral que custe R$300, seu plano valerá até 01/05/2019, mas para a contabilidade deve-se contar que no mês 2 entrou R$100, no mês 3 entrou R$100 e no mês 4 entrou R$100. Então, se o usuário que saber o quanto de dinheiro que entrou no período de 01/02/2019 a 15/02/2019, o código deve retornar só R$100. Da mesma forma, se o período inserido for 02/03/2019 a 30/03/2019, deve retornar R$100, mas se o período inserido for 01/02/2019 a 02/03/2019, deve retornar R$200 e se o período inserido for de 01/02 a 01/05/2019, deve retornar R$300.
Cálculo semelhante é feito para o plano semestral, mas a divisão é por 6 daí.

OBS: para facilitar ainda mais a vida do usuário final, esse código retorna o quanto entrou no caixa na forma de dinheiro, cartão de débito e cartão de crédito. Essa informação sobre a forma de pagamento está na Sheets("alunos").cells(i,"M").
Sheets("alunos).cells(i,"N") tem a data de inicio do plano e a cells(i,"O") tem a data final do plano.
Cells(i, "L") tem o valor total pago.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...