Boa tarde,
Estou com uma dúvida, como faria para sair de duas rotinas.
Basicamente tenho uma rotina que programei para Finalizar um pedido e assim enviar o pedido para o faturamento, mas ANTES do envio abro uma userform com uma listbox e mostro todos os itens que foram adicionados no pedido. O que ocorre é que se o usuário erra e quer cancelar e não enviar o pedido mesmo fechando a userform o processo da continuidade. Para concertar isso, então eu tentei fazer com que ao usuário apertar o botao X para fechar o userform o pedido seja "abortado" antes de enviar, porém estou tendo dificuldade.
Essa é a rotina "primária" que irá chamar a userform para mostrar os itens antes de enviar.
Sub finalped() 'processo de inserção das equações, calculos, envio do pedido para faturamento limpeza de planilha de pedido
Dim rng As Range
Dim cell As Range
Sheets("Pedido").Select
'ws = ActiveSheet.Name
blimit = Range("B1048576").End(xlUp).Row
Sheets("Pedido").Range("B41").Select
Do While ActiveCell <> Empty
n = ActiveCell.Row
ActiveCell.Offset(0, 6).Formula = "=$F$" & n & "*" & "$G$" & n 'Desconto em R$
ActiveCell.Offset(0, 7).Formula = "=$F$" & n & "-" & "$H$" & n 'Vlr unitário c/ desconto
ActiveCell.Offset(0, 8).Formula = "=$I$" & n & "*" & "$C$" & n 'sub total unit x qnt
ActiveCell.Offset(0, 9).FormulaLocal = "=$J$" & n & "*" & ncmperprd 'calc do tributo
ActiveCell.Offset(1, 0).Select
Loop
'somatorias
Sheets("Pedido").Select
Range("B41").Select
Range(Cells(1048576, ActiveCell.Column).End(xlUp), Cells(ActiveCell.Row, 256).End(xlToLeft)).Select
Call formatfont
Sheets("Pedido").Select
Sheets("Pedido").Range("C1048576").End(xlUp).Offset(1, 0).Select
ActiveCell.Formula = "=Sum($C$41:$C$" & blimit & ")"
ActiveCell.Offset(0, -1) = "Totais:"
Sheets("Pedido").Range("J1048576").End(xlUp).Offset(1, 0).Select
ActiveCell.Formula = "=Sum($J$41:$J$" & blimit & ")"
Sheets("Pedido").Range("K1048576").End(xlUp).Offset(1, 0).Select
ActiveCell.Formula = "=Sum($K$41:$K$" & blimit & ")"
'formatação das células
Sheets("Pedido").Select
Range("B41").Select
Range(Cells(1048576, ActiveCell.Column).End(xlUp), Cells(ActiveCell.Row, 256).End(xlToLeft)).Select
Call formatfont
Sheets("Pedido").Range("B41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatreg
Sheets("Pedido").Range("C41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatreg
Sheets("Pedido").Range("D41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatreg
Sheets("Pedido").Range("E41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatreg
Sheets("Pedido").Range("F41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatmoney
Sheets("Pedido").Range("G41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatpercent
Sheets("Pedido").Range("H41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatmoney
Sheets("Pedido").Range("I41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatmoney
Sheets("Pedido").Range("J41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatmoney
Sheets("Pedido").Range("K41").Select
Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp)).Select
Call formatmoney
UserForm3.Hide
'verificar Pedido antes de enviar para faturamento
UserForm4.ListBox1.Clear
UserForm4.Caption = "Revisão de Solicitações"
UserForm4.TextBox1 = UserForm1.TextBox1
UserForm4.TextBox2 = UserForm1.TextBox2
UserForm4.CommandButton1.Caption = "Enviar Pedido"
UserForm4.ListBox1.ColumnCount = 8
Sheets("Pedido").Select
Sheets("Pedido").Range("B40").Select
Set rng = Range(ActiveCell, Cells(1048576, ActiveCell.Column).End(xlUp))
For Each cell In rng.Cells
With UserForm4.ListBox1
.AddItem cell.Value
.List(.ListCount - 1, 1) = cell.Offset(0, 1).Value
.List(.ListCount - 1, 2) = cell.Offset(0, 2).Value
.List(.ListCount - 1, 3) = cell.Offset(0, 4).Value
.List(.ListCount - 1, 4) = cell.Offset(0, 5).Value
.List(.ListCount - 1, 5) = cell.Offset(0, 6).Value
.List(.ListCount - 1, 6) = cell.Offset(0, 7).Value
.List(.ListCount - 1, 7) = cell.Offset(0, 8).Value
End With
Next cell
'Aqui estou chamando a userform que irá mostrar ao usuário as informações e assim que fechar essa userform o processo continua para enviar através de email.
UserForm4.show
'duplicar uma planilha e depois enviar ela por email.
Call Mail_ActiveSheet
Call Clean
'Aqui é o ponto que deve VOLTAR caso o usuário clique no X da userform4
Cancelped:
End Sub
Este é o código que inseri na userform para especificar o que acontece quando o usuário clica no X da userform.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
If MsgBox("Você deseja encerrar esse pedido e recomeçar?", vbYesNo, "Encerrar pedido") = vbYes Then
UserForm1.MultiPage1.Value = 2
GoTo Cancelped
End If
End If
End Sub
Aparece um erro de "Rótulo não definido", alguém tem alguma sugestão?
Obrigado pela atenção,
FJ
Postado : 18/07/2013 3:06 pm