Notifications
Clear all

Tamanho ou complexidade

17 Posts
3 Usuários
0 Reactions
2,718 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

.
Em uma macro com Loop
é melhor deixar ela extensa e com testes únicos para cada situação,
ou menor porem mais complexa e com mais testes?

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 05/05/2014 5:05 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

Na verdade, você utilizou variáveis de nível de módulo, e isso é melhor que utilizar variáveis públicas no que se trata de desempenho.

nem sabia disso, comecei a fazer isso pq minha planilha sempre foi uma metamorfose, então não dava pra ficar reescrevendo cada macro.

Só não podemos esquecer de reiniciar os valores dessas variáveis a cada nova execução do procedimento pai para que elas não retenham valores da execução anterior e gerem erros em suas subrotinas.

ainda não tive esse problema, os valores são para ser intercambiáveis, as macros que trabalham diretamente na planilha não tem execução direta, são chamadas de dentro de macros de execução. Bem tbm não sei como reiniciar esses valores. :P

A macro que adiciona os valores das variaveis é essa: ela pega os valores em uma tabela na planilha que acompanha as mudanças com formulas. tentei melhorar mas foi tudo que consegui.
Queria eliminar a necessidade de uma tabela dentro da planilha."cada planilha criada tem uma"

Sub Setores()
If Setor <> "" Then
Sheets(Plan).Range("A11:R25").Calculate
Set rngDi = Sheets(Plan).Range("B11:R11").Find(Setor) 'localiza a coluna com o nome do setor na planilha (Plan)
If Not rngDi Is Nothing Then
K = rngDi.Column

Ti = Sheets(Plan).Cells(12, K).Value
CData = Sheets(Plan).Cells(13, K).Value
Ci = Sheets(Plan).Cells(14, K).Value
Cf = Sheets(Plan).Cells(15, K).Value
Fc = Sheets(Plan).Cells(16, K).Value
Cq = Sheets(Plan).Cells(17, K).Value   'quantidade colunas de dados do setor
nST = Sheets(Plan).Cells(18, K).Value       'indica Nome do  Setor
nP = Sheets(Plan).Cells(19, K).Value
Orde = Sheets(Plan).Cells(20, K).Value
Li = Sheets(Plan).Cells(21, K).Value
Lf = Sheets(Plan).Cells(22, K).Value
'cor1 = Sheets(Plan).Cells(23, k).Value
'cor2 = Sheets(Plan).Cells(24, k).Value
Not_Setor = 0
Else
Not_Setor = 1
MsgBox "Setor " & Setor & " não existe em " & Plan
End If
End If
End Sub

para trabalhar com setores "FIXOS" separadamente uso

Sub Prob()
Limit
Setor = "prob": Plan = Plan_Aq: Setores
End Sub

assim posso usar qualquer macro em qualquer parte da planilha poso até criar setores provisórios como é o caso desse "prob"
bem, prelo visto praticidade e versatilidade nem sempre rima com simplicidade.

os códigos que escrevo para uso pessoal no meu dia-a-dia são sofríveis,

não trabalho com excel, ainda não ganhei 1$ com isso, e somente mexo nessa planilha que ainda não serve para nada "apesar de fazer um monte de coisa"
Ainda tenho um longo caminho.
E obrigado pelas dicas, vou dar uma estudada nessa alteração q vc fez na macro para ver se tem algo que posso aproveitar nessa que estou trabalhando,
cada dia agente aprende novos caminhos

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 06/05/2014 10:18 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

somente para corrigir,

Na verdade, você utilizou variáveis de nível de módulo, e isso é melhor que utilizar variáveis públicas no que se trata de desempenho.

eu estava lendo a pagina que vc postou, que por sinal é muito informativa e bem explicada.

http://www.ambienteoffice.com.br/office ... vel_global

e as minhas variáveis realmente são publicas "de Nível Global": "Public fr(1 To 10) As Byte"
tenho até um modulo apenas para elas,

eu separo as macro por tipo em módulos diferentes, e as utilizo a partir de um userform, tenho até um onde digito os nomes das macros em textbox's e as executo em serie para fazer testes de compatibilidade.

só espero que a perda de performance não seja grande "até o momento está tudo rápido"

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 07/05/2014 4:03 am
Página 2 / 2