Notifications
Clear all

COMO posso etsra SIMPLIFICANDO esse codigo?

3 Posts
2 Usuários
0 Reactions
991 Visualizações
(@wenpra)
Posts: 76
Trusted 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
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/06/2013 9:17 am
Fernando Fernandes
(@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

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 21/06/2013 10:00 am