Ola Pessoal,
O código abaixo eu criei para validar alguns Options Buttons, mas a título de estudo gostaria de saber se existe uma forma de OTIMIZAR a rotina, pois acho que me faltou habilidade ao escrevê-la.
Desde ja agradeço quem puder colaborar
Sub FILTdNS() Dim Linha As Double Dim VORCA As Double Sheets("DNS").Activate Linha = 1 VORCA = TextBox40 With Sheets("DNS") Do While .Cells(Linha, "A").Value <> "" 'parte 1 If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 18 Then CH18 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 17 Then CH17 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 16 Then CH16 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 15 Then CH15 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 14 Then CH14 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 13 Then CH13 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 12 Then CH12 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 11 Then CH11 = True End If 'parte 2 If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 21 Then CH21 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 22 Then CH22 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 23 Then CH23 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 24 Then CH24 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 25 Then CH25 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 26 Then CH26 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 27 Then CH27 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 28 Then CH28 = True End If 'parte 3 If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 48 Then CH48 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 47 Then CH47 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 46 Then CH46 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 45 Then CH45 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 44 Then CH44 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 43 Then CH43 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 42 Then CH42 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 41 Then CH41 = True End If 'parte 4 If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 31 Then CH31 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 32 Then CH32 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 33 Then CH33 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 34 Then CH34 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 35 Then CH35 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 36 Then CH36 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 37 Then CH37 = True End If If Sheets("DNS").Range("B" & Linha) = VORCA And Sheets("DNS").Range("A" & Linha) = 38 Then CH38 = True End If Linha = Linha + 1 Loop End With End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Pois é Ed, mesmo com a modificação ainda esta lento, demora em média 9 segundos pra atualizar.
E eu to rodando apenas essa rotina. O Excel é 2007, o PC um CORE i3 com 4GB de memória...
Mas tá beleza meu caro. Meu intuito inicial era apenas aprender um método de reduzir o código, ja fomos muito mais além e abusei de sua boa vontade.
Valeu mesmo !!
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
desative o Hyper-Threading da bios
o excel e o vba trbalham apenas com um nucleo
e como o Hyper-Threading divide cada nucleo em 2
o excel e o vba acabam usando apenas 25% da capacidade do i3
com isso vc dobraria o desempenho de processamento para o excel
o meu tbm é um i3
caso possa me mandar as rotinas que tem na planilha e as colunas de controle para analise de desempenho no caso seria a coluna A e a B onde a macro faz varredura
e tbm o teste mais demorado
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"
Pois é Ed. Fiquei um pouco receoso em desativar o Hyper-Threading, pois é maquina do serviço.
Mas pra ver como ficaria fiz o teste. E sinceramente a diferença foi irrisória. De qualquer forma vou criar um modelo bem próximo do usado aqui e coloco aqui.
Abraço e valeu mesmo !
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
desculpa, mas então tem outra coisa agarrando a maquina
pq faz diferença sim e isso eu provei na minha maquina
no inicio eu ficava perdido em macros aqui e tentava de todo jeito diminuir o tempo,
e depois que desativei o tempo das macros caíram pela metade
e usando arrays as macros mesmo trabalhando com loop de mais 1000000 de celulas é instantâneo
e isso gjogando valores de uma celula para outra e comparando textbox, combobox entre outros
cara, sinto, mas já fiz oq pude e te orientei no que eu podia
se usando array, sem muito loop e verificação não resolveu
só posso te desejar sorte.
espero que outros com mais tempo de experiencia que eu possa te ajudar,
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"
Imagina, Ed. Voce ajudou demais camarada e muito mais que eu esperava.
Só uma duvida que fiquei um pouco receoso ao desativar Hyper-Threading, ele interfere em outras operações do PC, como download e outros programas ? (pergunto porque li sobre isso).
Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
a não ser que se tenha muitos processos rodando ao mesmo tempo
muito dificil se sua area de atuação depende de 4 nuncleos vc iria ficar insatisfeito com um i3
e a maioria dos programas usam apenas 1 ou 2 nucleos no maximo
mas a diferença somente vc pode dizer,
para mim foi notavel e até o excel ficou mais leve
o uso de processador pelo excel é comprovado usando o gerenciador de tarefa enquanto se usa uma macro ou um formula matricial pesada
ativado = 25 % de uso de procesador
desativado 50%
e isso na logica leva a crer que se leva a metade do tempo para rodar completamente
mas bem,
apenas vc sabe seu limite,
o de seu excel ou do pc
ou até mesmo da sua capacidade de lidar com problemas variados e aprendizado em cima do mesmo
se é impossível intervenção então só resta lidar com o resultado das coisas
até mais
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"