none
Imputbox no Excel -VBA RRS feed

  • Pergunta

  • Boas.

    Construí um procedimento para insersão de dados numa planilha (para isso estou usando formulários) mas os botões padrões do imputbox parecem ter o mesmo valor de retorno.

    Explico: Sem tratamento de erro; quando clico no botão cancel retorna erro 13 (tipos incompatíveis). Se clicar no botão OK com a caixa de texto do imputbox vasia retorna o mesmo erro.

    Após o tratamento do erro, o imputbox pode fechar ou continuar ativo dependendo do procedimento adotado, não importa que botão é acionado, com ou sem valores na caixa do imputbox.

    A impressão é que os dois botões (OK; Cancel) assumem o mesmo valor de retorno.

    Gostaria de orientação para resolver isso.

    Grato

    Edison

    quarta-feira, 13 de abril de 2011 22:30

Respostas

  • Se ajudou de alguma forma por favor votar.

    Agradeço desde já,


    Carlos Carvalho Citrangulo Junior
    Microsoft Certified Professional
    Microsoft Certified Desktop Support Technician
    MCTS Microsoft Windows Vista Configuration
    MCITP Enterprise Support Technician
    Profissional 5 Estrelas Microsoft
    http://carloscitrangulo.wordpress.com
    • Marcado como Resposta Edsudani sábado, 16 de abril de 2011 04:43
    quinta-feira, 14 de abril de 2011 01:32

Todas as Respostas

  • Olá Edsudani boa noite,

    Se eu entendi direito seu problema com o objeto input box, você deve fazer o seguinte:

    Veja se este algoritmo te ajuda, pois para que você consiga diferenciar o OK do Cancel você deve usar If.

     Sub Macro()

          Dim S As String

          ' Atribui o valor digitado no inputbox a variável S
          S = Application.InputBox("Enter Your Name:")

          ' Se o usuário clicar em Cancel no Inputbox, S é falso. Se S é falso, sai da procedure.
          If S = False Then
             Exit Sub
          Else
    'Exibe o valor digitado no inputbox
             MsgBox S
          End If

       End Sub

    Espero ter ajudado, caso sim, por favor votar como útil.

    Abraços,


    Carlos Carvalho Citrangulo Junior
    Microsoft Certified Professional
    Microsoft Certified Desktop Support Technician
    MCTS Microsoft Windows Vista Configuration
    MCITP Enterprise Support Technician
    Profissional 5 Estrelas Microsoft
    http://carloscitrangulo.wordpress.com
    quarta-feira, 13 de abril de 2011 22:49
  • Olá Carlos, boa noite.

     "Se eu entendi direito seu problema com o objeto input box, você deve fazer o seguinte:"

    Sua resposta mostra que você entendeu sim.

    Adaptei sua sugestão ao meu procedimento e ele funcionou para o botão Cancel, porém, quando clico no botão OK com a caixa de texto do imputbox vasia, aparece o erro 13 (tipos incompatíveis).

    Se eu obtiver os valores de retorno para os botões OK e CANCEL do imputbox, conseguiria manter o imputbox ativo forçando o usuário a introduzir o valor ou cancelar o procedimento.

    Antes eu havia comparado a variável com uma string de comprimento zero mas obtive resultado semelhante.

    Enquato isso tento imaginar outros modos de resolver este problema.

    Grato pela ajuda.

    Edison

    quinta-feira, 14 de abril de 2011 01:07
  • Edsudani boa noite,

    Acredito que esta é a solução:

    Dim strName As String
     strName = InputBox(Prompt:="Digite seu nome.", _
     Title:="Entre com seu nome", Default:="Seu nome aqui")
           If strName = "Seu nome aqui" Or _
                strName = vbNullString Then
                MsgBox ("campo em branco")
                strName = InputBox(Prompt:="Seu nome por favor.", _
                Title:="Entre com seu nome", Default:="Seu nome aqui")
                Exit Sub
           Else
               MsgBox ("OK")
           End If

    Espero ter ajudado, caso sim, por favor votar como útil.

    Abraços,


    Carlos Carvalho Citrangulo Junior
    Microsoft Certified Professional
    Microsoft Certified Desktop Support Technician
    MCTS Microsoft Windows Vista Configuration
    MCITP Enterprise Support Technician
    Profissional 5 Estrelas Microsoft
    http://carloscitrangulo.wordpress.com
    quinta-feira, 14 de abril de 2011 01:29
  • Olá Carlos.

    Aparentemente resolvi da seguinte forma:

    .

    .

    .

     

    n1 = Application.InputBox("digite um valor", "XXXXXXXXXXXXXX")
                If n1 = "" Then
                MsgBox "Você Deve preencher a caixa de texto.", 0 + 64, "PREENCHIMENTO OBRIGATÓRIO."
                GoTo Linhas
                ElseIf n1 = False Then
             Exit Sub
             Else
               ActiveCell.Offset(1, 0).Value = n1 'Desloca-se para a próxima Célula vasia Ativando-a e Transferindo o valor para ela.
               GoTo Linhas
          End If
         End If
         End If

    .

    .

    .

    Como se vê é uma adaptação dos dois modos descritos anteriormente; minha tentativa e sua sugestão.

    A hora está avançada amanhã ou no fim de semana testarei melhor e posto o resultado, OK?^

    Grato pela sujestão

    Edison

     

    quinta-feira, 14 de abril de 2011 01:29
  • Se ajudou de alguma forma por favor votar.

    Agradeço desde já,


    Carlos Carvalho Citrangulo Junior
    Microsoft Certified Professional
    Microsoft Certified Desktop Support Technician
    MCTS Microsoft Windows Vista Configuration
    MCITP Enterprise Support Technician
    Profissional 5 Estrelas Microsoft
    http://carloscitrangulo.wordpress.com
    • Marcado como Resposta Edsudani sábado, 16 de abril de 2011 04:43
    quinta-feira, 14 de abril de 2011 01:32
  • Boa noite Carlos

    Está resolvido!

    Agradeço imensamente pela sua prestimosa ajuda.

    Edison

    sábado, 16 de abril de 2011 04:47