Notifications
Clear all

Cancelar todos os comandos

9 Posts
1 Usuários
0 Reactions
1,047 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Por exemplo ; dá se o codigo exit em um textbox ,e coloca-se um if texbox="" then msgbox"textbox" ; exist como eu tendo um botão comandbutton1 clicar nele e ele cancelar o codigo que esta rodando no textbox , ou qualquer outro codigo que estiver rodadando?

 
Postado : 24/07/2012 10:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia,

Veja se este código te ajuda:

Sub Iniciar()
    [A1].Value = 0
    While [A1].Value < 1000
        [A1].Value = [A1].Value + Int(Rnd * 3) - 1
        DoEvents
    Wend
End Sub

Sub Parar()
    Stop
End Sub

Sub Encerrar()
    End
End Sub

A macro "Iniciar" foi criada, apenas, para exemplificar a situação.
A instrução "Stop" é semelhante a um comando CTRL + Break onde você interrompe a execução, porém pode continuar.
A instrução "End" encerra a execução.
Note que coloquei uma instrução "DoEvents" dentro do laço o que permite que um outro comando fora da macro "Iniciar" seja executado.

Abraço

 
Postado : 25/07/2012 5:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

não consegui o stop ;estou tentando ao clicar em um botão cancelar o código que está rodando

 
Postado : 29/07/2012 3:57 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite,

No seu código há um laço com a instrução "DoEvents"?
Se não houver não vai funcionar.
Além disso, para encerrar tudo acho que o "End" seja mais indicado.

Abraço

 
Postado : 29/07/2012 5:15 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fiz como vc disse e coloquei o DoEvents , ficou assim:

Private Sub txb_qtde1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
DoEvents
    txb_cod2.Visible = True
    Dim retorno
    If bCanceled Then
        bCanceled = False
        Exit Sub
    End If
    txb_soma1 = Format(txb_soma1, "#,##0.00")
    If txb_qtde1 = "" Or txb_qtde1 = 0 Then
        retorno = MsgBox("Digite a Quantidade", vbRetryCancel, "Digite a Quantidade")
        If retorno = vbRetry Then
            txb_qtde1.SetFocus
            Cancel = True
        Else
            If retorno = vbCancel Then
                bCanceled = True
                Me.txb_prod1.Value = ""
                Me.txb_marca1.Value = ""
                Me.txb_unit1 = ""
                Me.txb_cod1.Value = ""
                txb_cod2.Visible = False
                'Me.txb_cod1.SetFocus
            End If
        End If
     End If
    If txb_qtde1 <> 0 And txb_qtde1 <> "" Then
txb_total.Value = txb_soma1
     txb_soma2.Visible = True
     txb_qtde2.Visible = True
     txb_prod2.Visible = True
     txb_marca2.Visible = True
     txb_unit2.Visible = True
     Me.txb_cod2.SetFocus
     End If
End Sub

Porem quando clico em limparDados que está com o codigo:

Private Sub LimparVend_Click()
On Error Resume Next
If Me.MultiPage1.Value = 0 Then
Me.txb_cod1 = Empty
Me.txb_cod2 = Empty
Me.txb_cod3 = Empty
Me.txb_cod4 = Empty
Me.txb_cod5 = Empty
Me.txb_cod6 = Empty
Me.txb_cod7 = Empty
Me.txb_cod8 = Empty
Me.txb_cod9 = Empty
Me.txb_cod10 = Empty
Me.txb_prod1 = Empty
Me.txb_prod2 = Empty
Me.txb_prod3 = Empty
Me.txb_prod4 = Empty
Me.txb_prod5 = Empty
Me.txb_prod6 = Empty
Me.txb_prod7 = Empty
Me.txb_prod8 = Empty
Me.txb_prod9 = Empty
Me.txb_prod10 = Empty
Me.txb_marca1 = Empty
Me.txb_marca2 = Empty
Me.txb_marca3 = Empty
Me.txb_marca4 = Empty
Me.txb_marca5 = Empty
Me.txb_marca6 = Empty
Me.txb_marca7 = Empty
Me.txb_marca8 = Empty
Me.txb_marca9 = Empty
Me.txb_marca10 = Empty
Me.txb_qtde1 = Empty
Me.txb_qtde2 = Empty
Me.txb_qtde3 = Empty
Me.txb_qtde4 = Empty
Me.txb_qtde5 = Empty
Me.txb_qtde6 = Empty
Me.txb_qtde7 = Empty
Me.txb_qtde8 = Empty
Me.txb_qtde9 = Empty
Me.txb_qtde10 = Empty
Me.txb_unit1 = Empty
Me.txb_unit2 = Empty
Me.txb_unit3 = Empty
Me.txb_unit4 = Empty
Me.txb_unit5 = Empty
Me.txb_unit6 = Empty
Me.txb_unit7 = Empty
Me.txb_unit8 = Empty
Me.txb_unit9 = Empty
Me.txb_unit10 = Empty
Me.txb_soma1 = Empty
Me.txb_soma2 = Empty
Me.txb_soma3 = Empty
Me.txb_soma4 = Empty
Me.txb_soma5 = Empty
Me.txb_soma6 = Empty
Me.txb_soma7 = Empty
Me.txb_soma8 = Empty
Me.txb_soma9 = Empty
Me.txb_soma10 = Empty
Me.txb_total = Empty
LimparVend.Enabled = False
LLimpar.Enabled = False
BtProcessarVend.Enabled = False
LProcessarvend.Enabled = False
     txb_soma2.Visible = False
     txb_qtde2.Visible = False
     txb_prod2.Visible = False
     txb_marca2.Visible = False
     txb_unit2.Visible = False
     txb_cod2.Visible = False
     txb_soma3.Visible = False
     txb_qtde3.Visible = False
     txb_prod3.Visible = False
     txb_marca3.Visible = False
     txb_unit3.Visible = False
     txb_cod3.Visible = False
     txb_soma4.Visible = False
     txb_qtde4.Visible = False
     txb_prod4.Visible = False
     txb_marca4.Visible = False
     txb_unit4.Visible = False
     txb_cod4.Visible = False
     txb_soma5.Visible = False
     txb_qtde5.Visible = False
     txb_prod5.Visible = False
     txb_marca5.Visible = False
     txb_unit5.Visible = False
     txb_cod5.Visible = False
     txb_soma6.Visible = False
     txb_qtde6.Visible = False
     txb_prod6.Visible = False
     txb_marca6.Visible = False
     txb_unit6.Visible = False
     txb_cod6.Visible = False
     txb_soma7.Visible = False
     txb_qtde7.Visible = False
     txb_prod7.Visible = False
     txb_marca7.Visible = False
     txb_unit7.Visible = False
     txb_cod7.Visible = False
     txb_soma8.Visible = False
     txb_qtde8.Visible = False
     txb_prod8.Visible = False
     txb_marca8.Visible = False
     txb_unit8.Visible = False
     txb_cod8.Visible = False
     txb_soma9.Visible = False
     txb_qtde9.Visible = False
     txb_prod9.Visible = False
     txb_marca9.Visible = False
     txb_unit9.Visible = False
     txb_cod9.Visible = False
     txb_soma10.Visible = False
     txb_qtde10.Visible = False
     txb_prod10.Visible = False
     txb_marca10.Visible = False
     txb_unit10.Visible = False
     txb_cod10.Visible = False
Me.txb_cod1.SetFocus
End If
If Me.MultiPage1.Value = 1 Then
CmdLimpar_Click
End If
End Sub

Retorna a MsgBox("Digite a Quantidade", ao invés de cancelar a "rodagem" do Private Sub txb_qtde1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
No código Fechar

Private Sub Fechar_Click()
End
 Unload FrPrincipal
Sheets("Menu Inicial").Select
End Sub

Funciona ; porem é com end e isso faz fechar o userform ; neste caso blz pois eu estou pedindo para fechar , mas no caso anterior não posso usar o end pois não desejo sair do userform.

Para conferir , clicar na imagem escolher um produto , não digitar a quantidade e clicar em LIMPAR_DADOS

 
Postado : 29/07/2012 5:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

desculpem-me mas...
up

 
Postado : 01/08/2012 5:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite, Claudinei!

Em primeiro lugar, parabéns pelo visual da planilha!
A minha sugestão considerava que a "sub" a ser interrompida continha um laço, porém no seu código há uma sequência de instruções.
Portanto, a meu ver, a solução passa por uma revisão do código.
No momento, estou sem tempo para poder te propor uma solução.
Acredito que outros colegas do fórum poderão fazê-lo.

Abraço

 
Postado : 02/08/2012 7:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

ok , vou ficar no aguardo

 
Postado : 07/08/2012 5:34 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Alguns Comentários:
Em seu código do FrPrincipal, mova as linhas....

Option Explicit
Dim bCanceled As Boolean

...para o inicio do modulo, Option... e declarações Globais de variavel, devem obrigatoriamente vir no inicio do modulo.

Outra sugestão: Acostume-se em seu(s) projetos à "Depurar" o codigo (Menu superior Depurar -->Compilar VBAproject),pois assim consegue "ver" algumas incoerencias /erros de declaração.
Feito isso e qto a sua duvida experimente utilizar/setar bCanceled=true:
Na rotina Private Sub LimparVend_Click() acrescente
txb_cod10.Visible = False
bCanceled = True
Me.txb_cod1.SetFocus
End If

 
Postado : 07/08/2012 8:13 am