Ir ao conteúdo
  • Cadastre-se

Alexandre José Costa

Membro Pleno
  • Posts

    63
  • Cadastrado em

  • Última visita

Reputação

5

1 Seguidor

  1. @Midori, Boa tarde. Espero que tudo esteja bem. Eu não sei fazer isso. Mas eu mudei as diretrizes aqui e, por hora, eu vou abortar o funcionamento desta macro. Mas eu sei que uma hora ou outra vou voltar na mesma questão de armazenamento de valores. Escrevo para agradecer sua boa atenção de sempre. Seu conhecimento para os iniciantes aqui é de muito valor. Muito obrigado.
  2. Olá @Midori, Obrigado pelo retorno. Vou tentar fazer esta verificação e lhe retorno. Apenas para alinhar sua plan com minha: 1) a col que recebe os dados RTD é a D; 2) a col E deveria apresentar as últimas atualizações de qualquer linha do range; 3) os valores recebidos em cada linha do range (D5:D13 e D18:D26) vindos do RTD são sempre os mesmos, cada linha te o seu valor. Eu falei sobre isso aqui: Penso que isso pode ser visto depois. Só estou me adiantando, porque o dev pode tomar um linha de desenvolvimento que poderia ser evitada se soubesse de alguma informação importante antes. Vou tentar fazer a verificação que você me orientou e lhe retorno. Obrigado.
  3. Bom dia, @Midori, Fiz certo o que você me pediu? A plan parece inerte, não acusa o VBA trabalhando.
  4. Fiz isso que está na img e digitei F5. Nada aconteceu.
  5. @Midori, Fiz assim.... Sub Eventos() Application.EnableEvents = True End Sub Private Sub Worksheet_Calculate() Application.EnableEvents = False Call AtualizaDados(Range("D5:D13,D18:D26"), 10) Application.EnableEvents = True End Sub Sub AtualizaDados(Dados As Range, Colunas As Integer) Dim Ultimo As Range Dim Sequencia As Range Dim Conta As Integer For Each Ultimo In Dados If Ultimo(, 0).Value = "True" Then Set Sequencia = Ultimo(, 2).Resize(1, Colunas) Conta = WorksheetFunction.CountA(Sequencia) If Conta <> 0 Then Conta = IIf(Conta < Colunas, Conta, Conta - 1) Set Sequencia = Ultimo(, 2).Resize(1, Conta) Sequencia.Offset(0, 1).Value = Sequencia.Value End If Ultimo(, 2).Value = Ultimo.Value End If Next Ultimo End Sub Se fiz certo, a plan não reage ao código.
  6. Assim? Sub Eventos() Application.EnableEvents = "True" End Sub Private Sub Worksheet_Calculate() Application.EnableEvents = False Call AtualizaDados(Range("D5:D13,D18:D26"), 10) Application.EnableEvents = "True" End Sub Sub AtualizaDados(Dados As Range, Colunas As Integer) Dim Ultimo As Range Dim Sequencia As Range Dim Conta As Integer For Each Ultimo In Dados If Ultimo(, 0).Value = True Then Set Sequencia = Ultimo(, 2).Resize(1, Colunas) Conta = WorksheetFunction.CountA(Sequencia) If Conta <> 0 Then Conta = IIf(Conta < Colunas, Conta, Conta - 1) Set Sequencia = Ultimo(, 2).Resize(1, Conta) Sequencia.Offset(0, 1).Value = Sequencia.Value End If Ultimo(, 2).Value = Ultimo.Value End If Next Ultimo End Sub Se for só isso, não está armazenando. A saber eu já salvei a plan modelo com outras extensões, até .xlsm, mas infelizmente o comportamento é mesmo, altero os valores do range, mas eles não são armazenados.
  7. Olá @Midori, Obrigado pelo retorno. A col que sofre alterações é a D. Já alterei aqui. DE: Call AtualizaDados(Range("E5:E13,E18:E26"), 10) PARA: Call AtualizaDados(Range("D5:D13,D18:D26"), 10) Eu copiei e colei o último cód que você fez acima. Infelizmente, nada acontece. Se altero um valor qualquer da col D, a plan não armazena a alteração. Será que é porque estou usando uma extensão .xls? Se isso for um empecilho, eu terei um sério problema, pois, só posso usar .xls e .xlsx. OBS: durante o fds nenhum outro cód funcionou. Inclusive o antigo que estamos adaptando aqui. Este antigo chegou a armazenar, sabe? Mas até ele parou. Por isso perguntei sobre a extensão .xls. Sobre o registro dos horários: a ideia é que os horários sejam registrados para mostrar quando houve uma alteração dentro do range. E isso fica no histórico. Onde fica armazenado? Nas linhas 4 e 17 de cada nova col gerada, encabeçando cada um dos ranges.
  8. @Midori, boa tarde. Espero que tenha tido um bom fds. você acha que consegue seguir com sua ajuda? Desde já agradeço.
  9. Olá Midori, Fiz uma busca para obter a resposta da pergunta acima. Em suma, minha versão do Excel aceita macros e VBA nos arquivos .xls. Com isso temos um item a menos para resolver. Agora restam 3 deles. Abaxo segue a resposta completa: Sim, o Microsoft Excel 2019 suporta macros e VBA, e você pode usar a extensão ".xls" para documentos que contenham macros e código VBA. A versão que você mencionou, "Microsoft Excel 2019 MSO (Versão 2312 Build xx.x.xxxxxxxx 32 bits(aqui one aparecem "x" omiti número de minha versão) ", é uma versão do Excel que oferece suporte a macros e VBA. Ao usar a extensão ".xls", você pode criar documentos que incluam código VBA. Lembre-se de que, ao abrir um arquivo que contém macros, o Excel geralmente solicitará que você habilite a execução de macros por motivos de segurança. Certifique-se de permitir a execução de macros apenas em arquivos de fontes confiáveis. Se você tiver requisitos específicos para compatibilidade com versões mais antigas do Excel, a extensão ".xls" é apropriada. No entanto, ao considerar as melhores práticas e recursos mais recentes, pode ser apropriado usar o formato ".xlsm" para documentos que contêm macros e VBA, especialmente ao compartilhar arquivos entre diferentes versões do Excel.
  10. @Midori, boa tarde e obrigado pelo retorno. Entendido. Sim, todos estes pontos já foram vistos. Quanto ao range, eu já fiz a alteração e ele está funcionando bem, ele captura e armazena. Agora surgiram outros pontos para se adequarem a este projeto: 1) Este arquivo (Excel) é chamado pelo TRYD, uma plataforma que não aceita o .xlsm. Podemos mudar a extensão de modo que o VBA funcione corretamente? 2) Como o VBA está capturando e armazenando corretamente, você pode, por favor, escrever o VBA com os ranges corretos? A col D tem dois ranges para verificar se ocorrem alterações nos valores. São eles: C4:C13 e D17:D26. Mas as céls de horas (C4 e D17 que estão dentro destes ranges) só devem ser capturadas e armazenadas quando uma alteração for capturada nas outras linhas do range. 3) Toda vez que uma alteração for capturada, a hora da alteração também deverá ser capturada e armazenada no topo de cada nova col. Se observar a planilha modelo (veja o print abaixo), na aba CapturaDados, nós temos dois tipos diferentes de históricos, o CPA e o VDA. As horas, quando capturadas, devem ficar nas linhas 4 e 17 de cada nova col do histórico. Veja o print: 4) quando os valores de cada linha do range sofrem alterações, eles são sempre os mesmos. Se você olhar para a col C do print acima, poderá ver que ela mostra alguns códigos. São estes códigos que vão aparecer no histórico. Estou aqui pensando que isso pode ser um problema, já que o VBA precisa enxergar os valores mudando de C para C, de C+ para C+, de V para V, De V+ para V+, etc, isso pode ser um problema para identificar que algo mudou. Neste ponto, talvez ajude saber que: a) enquanto o RTD não traz nova alteração as céls mostrarão FALSO; b) a cada alteração que o RTD traz para a Col D , o VBA pode conferir se o novo valor é igual ao da Col C à esquerda. (a col C não se altera, apenas exibe os códs de cada linha) A resolução destes 4 pontos devem fechar a questão. Por favor, você pode, por gentileza, me auxiliar nisso? Desde já sigo muito agradecido.
  11. Revendo aqui, o cód de referência, vai atender. Já vi onde mudar isso no cód de referência. DE: Call Atualiza(Valor, 5) PARA: Call Atualiza(Valor, 16380) É isso mesmo?
  12. Não, eu só tinha copiado o Atualiza. Vou fazer o que você falou. Se der certo eu altero o range. @Midori, copiei o procedimento "Atualiza" e o "Calculate". Abaixo segue o print, pois, não sei se a ordem deles está correta: Estamos evoluindo. Como pode ver no print, ele está pedindo para nomear a macro (não sei o que fazer); As regras deste projeto, como descritas na abertura do tópico são um pouco diferentes do tópico que estamos usando como referência: Se olhar na plan modelo, a col D tem dois ranges: C4:C13 e D17:D26; Na plan modelo, o armazenamento do histórico se inicia na col F (duas à frente da D); Neste projeto, os valores de cada linhas são sempre os mesmos, com isso, o VBA não enxerga os valores mudando de C para C, de C+ para C+, etc. Talvez ajude: na descrição das regras, que eu propus na abertura o tópico, falo para os ranges da Col D "olharem" para a Col C para saber se o novo valor da Col D é igual ao da Col C à esquerda; Toda vez que uma alteração for capturada, a hora da alteração também será capturada e armazenada no topo de cada nova col à frente. (ao ver planilha modelo ficará claro); Neste projeto, os valores do "histórico" são contínuos, enquanto que no tópico anterior (que estamos tomando como referência), guardavam apenas os últimos 5 valores; Pensando em trazer as coisas mais mastigadas para você, o que consigo ver, por hora, é isso. Parece que o cód de referência vai funcionar. Desde já muito agradecido.
  13. @Midori, salvei agora como xlsm. Mas preciso sua ajuda com o VBA. O VBA do outro tópico travava minha plan e você fez uma alteração final que resolveu naquela oportunidade. Mas esta alteração chama uma macro que não existe agora. Não sei como lidar com isso.
  14. @Midori Eu consultei o link. Ele foi resultado de uma dúvida que eu mesmo postei e você acabou resolvendo aqui. De fato são problemas parecidos. Eu fui colocar o cód. na minha planilha e o Excel bloqueou a execução de macros. Para desbloquear, eu segui as instruções da MS (abaixo), mas a caixa "desbloquear" não aparece para mim. Desbloquear um único arquivo Na maioria dos casos, você pode desbloquear as macros modificando as propriedades do arquivo da seguinte maneira: Abra o Explorador de Arquivos do Windows e acesse a pasta onde você salvou o arquivo. Clique com o botão direito do mouse no arquivo e escolha Propriedades no menu de contexto. Na parte inferior da guia Geral , marque a caixa de seleção Desbloquear e selecione OK. Fonte: https://support.microsoft.com/pt-br/topic/uma-macro-potencialmente-perigosa-foi-bloqueada-0952faa0-37e7-4316-b61d-5b5ed6024216 Midori, apesar dos problemas serem parecidos, agora as regras são outras. Acredito que mais simples que de outrora.
  15. Olá Midori, bom dia. É um prazer estar com você novamente. Vou consultar o link. Tks.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!