Jump to content
Fórum Script Brasil
  • 0

Dúvida no código para retomar metodos já existentes


Alex Avancini

Question

Olá à todos,

Minha dúvida é bem simples, como sou iniciante não conheço a função que usar.

Com certeza ela existe e é bem simples.

Nesse código só estou conhecendo o vb um pouco mais, sem contar validações para verificar o que o usuáriodigitou mesmo, eu espero coletar os dados do usuário atravez de umas perguntas em input box e no final apresentá-lo atraves de um msg-box simples. Após este msg box que apresenta os dados fornecidos pelo usuário virá um outro msg box perguntando se ele confirma os dados.

If o usuário clicar em SIM então abrirá o form1 normalmente e ele começara a trabalhar.

If o usuário clicar em não as perguntas dos inputbox serão repetidas e novamente apresentadas pelo msgbox até novamente perguntar se confirma ou não os dados.

Ele deve ficar em loop até dizer que confirma os dados que enviou.

Só sairá do loop quando confirmar os dados.

segue abaixo o que eu já programei:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim pergunta1 As Integer

Dim pergunta2, pergunta3 As Integer

Dim pergunta4 As String

Dim resultado As String

Dim resultado_final As MsgBoxResult

Dim estilomsgbox As MsgBoxStyle

Dim pergunta_final As String

pergunta1 = (InputBox("Qual a sua idade?", "informe sua idade ao sistema"))

Do While (pergunta1 = "")

pergunta1 = InputBox("Você ainda não informou sua idade:", "informe sua idade ao sistema", "", 2, 3)

If (pergunta1 <> "") Then

Exit Do

End If

Loop

pergunta2 = (InputBox("Qual o seu peso?", "Informe seu peso ao sistema"))

pergunta3 = (InputBox("Qual o seu altura?", "Informe seu nome ao sistema"))

pergunta4 = (InputBox("Qual o seu nome?", "Informe seu nome ao nome"))

resultado = pergunta4 & "," & " seu peso é de " & pergunta2 & " , sua idade é " & pergunta1 & _

" e sua altura é " & pergunta3 & "."

MsgBox(resultado)

pergunta_final = ("Confirma estes dados?")

estilomsgbox = MsgBoxStyle.YesNo

resultado_final = MsgBox(pergunta_final, estilomsgbox)

If resultado_final = MsgBoxResult.Yes Then

MsgBox("Obrigado! seus dados foram armazenados com sucesso") 'e carrega o form1

Else 'se a resposta for não então execute os metodos abaixo descritos para voltar aos metodos de coletar

'perguntas do usuário

????????????????????????????????

????????????????????????????????

????????????????????????????????

????????????????????????????????

End If

End Sub

End Class

* minha dúvida está ali na validação do "Else" para fazer carregar todas as perguntas novamente.

Qual função usar?

Antecipo agradecimentos!

Sei que vão matar em 2 minutos.

Att;

Alex

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Alex Avancini,

Você poderia colocar em um método para as "perguntas" e chamar esse método e validar o retorno. Caso retorno não seja válido você executar o método de perguntas novamente.

Segue abaixo um exemplo.

Option Explicit

Private Sub Form_Load()

    Dim Retorno As Variant
    
    Retorno = FazPerguntas

    If Not Val(Retorno) > 0 Then
        While Val(Retorno) = 0
            Retorno = FazPerguntas
        Wend
    End If
    
End Sub

Private Function FazPerguntas() As Variant

    Dim pergunta1 As Variant
    
    pergunta1 = (InputBox("Qual a sua idade?", "informe sua idade ao sistema"))
    
    FazPerguntas = Val(pergunta1)
    
End Function

Link to comment
Share on other sites

  • 0

Aqui está o código que desenvolvi para sua dúvida. Não utilizo While o que julgo dificultar a necessidade final, utilizo o método goto, veja como ficou abaixo, tudo o que precisa é adicionar um form ao seu projeto e colar o código no evento load. Espero ter ajudado. (Não aconselho a utilização deste código em um programa para distribuição pois tal tipo de rotina faz com que o programa só possa prosseguir se o usuário responder todas as perguntas, não há portanto funcionalidade no botão cancelar).

Private Sub Form_Load()

Dim Pergunta1 As Integer

Dim Pergunta2 As Integer

Dim Pergunta3 As String

Dim Titulo As String

Dim Mensagem As String

Dim ResultadoFinal As VbMsgBoxResult

Dim Estilo As VbMsgBoxStyle

Dim PerguntaFinal As String

Inicio:

'este tipo de declaração gera uma linha de referencia que pode ser chamada atraves

'do metodo goto fazendo com que o aplicativo retorne à linha em questão

Mensagem = "Informe sua idade ao sistema:"

Titulo = "Qual a sua idade?"

Repetir_Pergunta1:

Pergunta1 = InputBox(Mensagem, Titulo)

If Pergunta1 = Empty Then

Mensagem = "Você ainda não informou sua idade." & _

vbNewLine & "Informe-a para prosseguir."

GoTo Repetir_Pergunta1

Else

Mensagem = "Informe seu peso ao sistema:"

Titulo = "Qual o seu peso?"

Repetir_Pergunta2:

Pergunta2 = InputBox(Mensagem, Titulo)

If Pergunta2 = Empty Then

Mensagem = "Você ainda não informou seu peso." & _

vbNewLine & "Informe-o para prosseguir:"

GoTo Repetir_Pergunta2

Else

Mensagem = "Informe seu nome ao sistema:"

Titulo = "Qual o seu nome?"

Repetir_Pergunta3:

Pergunta3 = InputBox(Mensagem, Titulo)

If Pergunta3 = Empty Then

Mensagem = "Você ainda não informou seu nome." & _

vbNewLine & "Informe-o para prosseguir:"

GoTo Repetir_Pergunta3

Else

PerguntaFinal = "Dados inseridos" & _

vbNewLine & "Idade: " & Pergunta1 & _

vbNewLine & "Peso: " & Pergunta2 & _

vbNewLine & "Nome: " & Pergunta3 & _

vbNewLine & vbNewLine & "Confirma os dados acima?"

Estilo = vbYesNo + vbQuestion

ResultadoFinal = MsgBox(PerguntaFinal, Estilo, "Confirmação dados")

If ResultadoFinal = vbYes Then

Form1.Show

Else

GoTo Inicio

End If

End If

End If

End If

End Sub

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...