Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
joaoemduvida
Colaborador
Colaborador
Mensagens: 14
Registrado em: Seg Abr 06, 2020 11:17 am

Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por joaoemduvida »

Caros colegas, boa tarde!

Não sei programar em VBA apesar de ter alguma noção do que se trata.

Peguei o código abaixo em algum site em inglês e adaptei os textos para o português:

Código: Selecionar todos

Sub Limpar_valores_e_fórmulas()

Dim RangeToClear As Range

Set RangeToClear = Application.InputBox("Selecione as células que deseja limpar", Type:=8)

userInput = MsgBox("Confirma a exclusão? Esta operação não poderá ser desfeita!", vbYesNo)

If userInput = vbYes Then

     RangeToClear.ClearContents

     Else

     MsgBox ("Desmarcando as células selecionadas para exclusão.")

  End If


End Sub
Porém, estou com um problema que parece ser comum quando utiliza-se o 'Application.InputBox'. Quando clico em 'Cancelar' logo na exibição da caixa de mensagem surge a seguinte mensagem de erro:
"Erro em tempo de execução '424':

O objeto é obrigatório"
As demais opções do código estão funcionando perfeitamente, exceto o botão 'Cancelar' inicial.

Como faço para quando clicar em cancelar simplesmente fechar a caixa sem aparecer nenhuma mensagem ou esta mensagem de erro?

Obrigado desde já.

Abraços,

João


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por Wagner Morel »

joaoemduvida,

Boa Noite!

Você pode fazer assim:

Código: Selecionar todos

Sub Limpar_valores_e_fórmulas()
    Dim TestaPreenchimento As Variant
    Dim RangeToClear As Range
    
    TestaPreenchimento = Application.InputBox("Selecione as células que deseja limpar")
    
    If TestaPreenchimento <> "" And TestaPreenchimento <> False Then
        Set RangeToClear = TestaPreenchimento 'Application.InputBox("Selecione as células que deseja limpar", Type:=8)
        
        userInput = MsgBox("Confirma a exclusão? Esta operação não poderá ser desfeita!", vbYesNo)
        
        If userInput = vbYes Then
             RangeToClear.ClearContents
        Else
             MsgBox ("Desmarcando as células selecionadas para exclusão.")
        End If
    End If
End Sub



joaoemduvida
Colaborador
Colaborador
Mensagens: 14
Registrado em: Seg Abr 06, 2020 11:17 am

Re: Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por joaoemduvida »

Olá, Wagner, bom dia!
Quase deu certo!
Quando clico em "Cancelar" a caixa fecha e não aparece a mensagem do erro 424.
Porém quando eu seleciono as células e clico em "OK" o erro volta a aparecer.
O depurador apontou para a linha abaixo do "If TestaPreenchimento".

Código: Selecionar todos

If TestaPreenchimento <> "" And TestaPreenchimento <> False Then
        Set RangeToClear = TestaPreenchimento 'Application.InputBox("Selecione as células que deseja limpar", Type:=8)
Uma curiosidade sobre esta linha do código:

Código: Selecionar todos

If TestaPreenchimento <> "" And TestaPreenchimento <> False Then
O 'diferente de vazio' e o 'diferente de falso' remetem ao "Cancelar"? Não consegui entender este trecho.
Obrigado.
João


Wagner Morel
Manda bem
Manda bem
Mensagens: 107
Registrado em: Qua Nov 29, 2017 11:51 am
Localização: Fortaleza - CE

Re: Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por Wagner Morel »

O 'diferente de vazio' remete ao botão OK e o 'diferente de falso' remetem ao Cancelar


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


joaoemduvida
Colaborador
Colaborador
Mensagens: 14
Registrado em: Seg Abr 06, 2020 11:17 am

Re: Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por joaoemduvida »

Entendi a lógica, Wagner Morel.
E quanto ao erro que mudou de posição no código: o que pode ser feito?
Obrigado.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Erro em tempo de execução '424' quando clica-se na opção 'Cancelar' em um Application.InputBox

Mensagem por Reinaldo »

Uma possibilidade; experimente/teste:

Código: Selecionar todos

Sub Limpar_valores_fórmulas()
Dim RangeToClear As Range
Dim UserInput As String
On Error GoTo strErro

Set RangeToClear = Application.InputBox("Selecione as células que deseja limpar", Type:=8)
UserInput = MsgBox("Confirma a exclusão? Esta operação não poderá ser desfeita!", vbYesNo)
    If UserInput = vbYes Then
        RangeToClear.ClearContents
     Else
        MsgBox ("Desmarcando as células selecionadas para exclusão.")
    End If
Exit Sub
strErro:
MsgBox ("Voçe cancelou a operação")
End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder