Inquiridor
Acessar os registradores

Discussão Geral
-
Todas as Respostas
-
-
Os registradores são entre "" um tipo de memória da CPU, eles são mais rápidos, porém com menor espaço de armazenamento, pelo que eu pesquisei é preciso usar linguagem de máquina, e creio que o VBA não tenha biblioteca para isso.... pra saber mais dá uma lida nesse link: http://www.di.ufpb.br/raimundo/Hierarquia/Registradores.html
-
Ah, sim, sei do que está falando.
Talvez seja possível sim, pois o VBA pode acessar as chamadas API do Windows, e essas chamadas são todas as que estão disponíveis também no C++.
Você tem algum exemplo de código em VB.NET, C# ou C++ que faça o que quer? Poderia postar? Se sim, basta declarar as chamadas API de procedimentos que não existem no VBA e usá-los por lá.
http://www.ambienteoffice.com.br - Participe do grupo de WhatsApp sobre Microsoft Office: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG
-
É a título de dúvida, estou acompanhando um analista que está com uma código que demora para consolidar e formatar um relatório, cerca de 2 minutos e até estouro de memória! Mas vou postar abaixo um código para a gente trabalhar!
'COD DE FORMATAÇÃO DE TABELA
Sub tratarZCO081(wrk) Dim l, c, lMax As Long c = 1 l = 2 Range(Rows(1), Rows(6)).Delete Do While c < 23 If Cells(1, c) = "" Then Columns(c).Delete Else c = c + 1 End If Loop lMax = Range("W1").End(xlToRight).End(xlDown).End(xlToLeft).End(xlUp).Offset(1).Row Do While l < lMax If Cells(l, 1) = "" Or Cells(l, 1) = "Material" Then Rows(l).Delete lMax = lMax - 1 Else l = l + 1 End If Loop Columns(1).Insert xlToRight Cells(1, 1) = "AnoMes" Range("A2", "A" & Range("B1").End(xlDown).Row) = Plan3.ano & "/" & Plan3.mes End Sub
- Editado GabrielBarbosa67 terça-feira, 20 de dezembro de 2016 12:07
-
Ao inserir um código no fórum, utilize blocos de código. Para utilizar essa ferramenta, clique no botão cuja legenda é “Inserir bloco de código” na barra do editor de mensagens do fórum. Uma janela aparecerá onde você deverá colar seu código cru na caixa de texto à esquerda. Então, selecione a opção Vb.Net na caixa de combinação que você verá em cima à esquerda e depois clique no botão Inserir.
---
Não é necessário acessar a CPU no nível de máquina para resolver seu problema.
Sua rotina está lenta porque está usando métodos lentos. Muita coisa pode ser alterada para ganhar mais desempenho.
---
Dim l, c, lMax As Long
Cuidado: Apenas lMax está declarado como Long. Mais informações em: http://ambienteoffice.com.br/blog/variaveis-e-constantes/#cuidado-ao-declarar-mais-de-uma-variavel-numa-instrucao
---
Possivelmente a pequena mudança que fiz abaixo irá tornar seu código mais rápido:
Sub tratarZCO081(wrk) Dim l, c, lMax As Long Application.ScreenUpdating = False Application.Calculation = xlCalculationManual c = 1 l = 2 Range(Rows(1), Rows(6)).Delete Do While c < 23 If Cells(1, c) = "" Then Columns(c).Delete Else c = c + 1 End If Loop lMax = Range("W1").End(xlToRight).End(xlDown).End(xlToLeft).End(xlUp).Offset(1).Row Do While l < lMax If Cells(l, 1) = "" Or Cells(l, 1) = "Material" Then Rows(l).Delete lMax = lMax - 1 Else l = l + 1 End If Loop Columns(1).Insert xlToRight Cells(1, 1) = "AnoMes" Range("A2", "A" & Range("B1").End(xlDown).Row) = Plan3.Ano & "/" & Plan3.mes Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub
http://www.ambienteoffice.com.br - Participe do grupo de WhatsApp sobre Microsoft Office: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG
-
Eu compreendo oque você disse, também desabilito o Calculation e o ScreenUpdating, esse cod acima é apenas um exemplo para declararmos as variáveis nos registradores, não tenho acesso ao código do analista! A dúvida mesmo é se é possível utilizar os registradores em vba
-
"A dúvida mesmo é se é possível utilizar os registradores em vba"
Provavelmente sim. No entanto, por nunca ter usado, não sei onde te indicar.
Se você me apresentar um código de C++ ou C# que faz o que deseja, conseguirei te ajudar.
Ou: se você postar um código que queira tornar mais rápido, também posso ajudar.
http://www.ambienteoffice.com.br || Participe do grupo de WhatsApp sobre Microsoft Office: https://chat.whatsapp.com/K1uey5Q4yJdKnsgWkVQAZG