Página 1 de 1

Qual melhor maneira de executar cadeia de processos?

Enviado: 11 Jul 2018 às 10:46
por GladstoneD
Bom dia, pessoal!!

Seguinte. Tenho alguns passos a serem executados durante uma venda. No momento, cada parte de codigo está separado em suas Subs. Mas descobri que tem como usar o GOTO para fazer esses passos. Qual vcs me recomendam utulizar. Segue exemplo dos dois tipos

UTILIZANDO O GOTO
Código: Selecionar todos
Sub Pagamento()

If Me.CmbPagamento.Value = "Dinheiro" Then
        GoTo Dinheiro
     
    ElseIf Me.CmbPagamento.Value = "Cartão" Then
        GoTo Cartão

Dinheiro:
Set Tabela = Plan3.ListObjects("Tab_Caixa")
Set Registro = Tabela.ListRows.Add

'Conjunto de Endereços""""""""""""""""""""""

With Registro

    .Range(1, 1).Value = CDate(Me.TxtData)
    .Range(1, 2).Value = frmVenda.TxtQtde.Value * 1
    .Range(1, 3).Value = frmVenda.CmbProduto.Value
End With

GoTo Fim
 
'---------------------------------------------------------------------------------------------
Cartão:
 Set Tabela = Plan6.ListObjects("Tab_Cartao")
Set Registro = Tabela.ListRows.Add

'Conjunto de Endereços""""""""""""""""""""""

With Registro
    .Range(1, 1).Value = CDate(Me.TxtData)
    .Range(1, 2).Value = frmVenda.TxtQtde.Value
    .Range(1, 3).Value = frmVenda.CmbProduto.Value
End With

GoTo Fim

Fim:
End Sub
Agora utilizando as Subs é o msmo codigo, mas cada tipo (Dinheiro e Cartao), estão em subs separadas
Código: Selecionar todos
Sub Pagamento()

If Me.CmbPagamento.Value = "Dinheiro" Then
        Call Dinheiro
     
    ElseIf Me.CmbPagamento.Value = "Cartão" Then
        Call Cartão
End Sub
Qual é a forma correta? Desde já agradeço a ajuda

Qual melhor maneira de executar cadeia de processos?

Enviado: 11 Jul 2018 às 13:03
por JCabral
Julgo que não é necessário utilizar a expressão GOTO, basta reestruturar o código
Código: Selecionar todos
Sub Pagamento()
    
    If Me.CmbPagamento.Value = "Dinheiro" Then
        Set Tabela = Plan3.ListObjects("Tab_Caixa")
        Set Registro = Tabela.ListRows.Add
        
        'Conjunto de Endereços""""""""""""""""""""""
        With Registro
            
            .Range(1, 1).Value = CDate(Me.TxtData)
            .Range(1, 2).Value = frmVenda.TxtQtde.Value * 1
            .Range(1, 3).Value = frmVenda.CmbProduto.Value
        End With
        
        
    ElseIf Me.CmbPagamento.Value = "Cartão" Then
        Set Tabela = Plan6.ListObjects("Tab_Cartao")
        Set Registro = Tabela.ListRows.Add
        
        'Conjunto de Endereços""""""""""""""""""""""
        
        With Registro
            .Range(1, 1).Value = CDate(Me.TxtData)
            .Range(1, 2).Value = frmVenda.TxtQtde.Value
            .Range(1, 3).Value = frmVenda.CmbProduto.Value
        End With
    End If

End Sub
Quanto a mim a segunda opção é mais limpa.

Re: Qual melhor maneira de executar cadeia de processos?

Enviado: 11 Jul 2018 às 18:22
por osvaldomp
Código: Selecionar todos
Sub Pagamento()
 Dim Tabela As ListObject
  If Me.CmbPagamento.Value = "Dinheiro" Then
    Set Tabela = Plan3.ListObjects("Tab_Caixa")
  Else: Set Tabela = Plan6.ListObjects("Tab_Cartao")
  End If
   With Tabela.ListRows.Add
    .Range(1, 1).Value = CDate(Me.TxtData)
    .Range(1, 2).Value = frmVenda.TxtQtde.Value * 1
    .Range(1, 3).Value = frmVenda.CmbProduto.Value
   End With
End Sub