Notifications
Clear all

COMO posso etsra SIMPLIFICANDO esse codigo?

3 Posts
2 Usuários
0 Reactions
972 Visualizações
(@wenpra)
Posts: 76
Estimable Member
Topic starter
 

Sub ProcA()

If ActiveCell.Text = frmContrato.NContrato Then
ActiveCell.Offset(0, 5).Select
Call ProcB
Else
Call addProduto
Call filtrar_dados
frmContrato.ListBoxLoc1.Clear
Call PreencherListBox
Call ValorTotalFiltro
frmContrato.bt_Finalizar.Enabled = True
frmContrato.ValorTotal = Format(frmContrato.ValorTotal, "#,###0.00")
End If

End Sub

Sub ProcB()
If ActiveCell.Value = frmContrato.Produto.Text Then
ActiveCell.Offset(0, 3).Select
Call ProcC
Else
ActiveCell.Offset(1, -5).Select
Call ProcA
End If

End Sub
Sub ProcC()

If ActiveCell.Value = frmContrato.Cortesia.Text Then
MsgBox "Já exitem esse item locado.", vbInformation, "Erro"
Else
ActiveCell.Offset(1, -3).Select
Call ProcA
End If

End Sub

 
Postado : 21/06/2013 7:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Pelo que eu vi, este código já está simplificado ao limite....
não vejo aonde você pode "estar simplificando" (sic) mais ainda...

abs

 
Postado : 21/06/2013 9:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Você diz esse Código, mas colocou tres(03), e numa passagem rápida, de fato não há muito a se fazer, pois dependeria de entender todo o conjunto e analisar em que momento esão sendo chamado estas rotinas, por exemplo :
Dentro da :
Sub ProcA()
Temos:
If ActiveCell.Text = frmContrato.NContrato Then
Ja que está utilizando ActiveCell, em que momento ela foi selecionada ?
ActiveCell.Offset(0, 5).Select
Se a condição for verdadeira é selecionado outra celula, e a não ser que apos esta seleção a ação a executar esteja na rotina que vem a seguir : Call ProcB, não vejo o porque da seleção.

Depois temos, se a condição for Falsa :
Else
Mais Quatro rotinas,
Call addProduto
Call filtrar_dados
frmContrato.ListBoxLoc1.Clear
Na instrução acima, desde que esta rotina não esteja sendo executada dentro do form que contem o listboxloc1, ou até mesmo se estiver, poderia estar na rotina abaixo que preenche acredito eu o Listbox.

Call PreencherListBox
Call ValorTotalFiltro
frmContrato.bt_Finalizar.Enabled = True
frmContrato.ValorTotal = Format(frmContrato.ValorTotal, "#,###0.00")
End If

Nas outras rotinas temos praticamete as mesmas situações, ActiveCell, isto nos induz a definição que elas já estão selecionadas ou foram atraves de alguma instrução antes de chegar nas linhas.

Então se a solicitação era mais para uma opinião, deixo aqui a minha, mas se está tendo problema de performance com as mesmas e quer alguma sugestão para melhorar, só com conjunto inteiro.

[]s

 
Postado : 21/06/2013 10:00 am