Ir ao conteúdo
  • Cadastre-se

Edson Luiz Branco

Membro Pleno
  • Posts

    844
  • Cadastrado em

  • Última visita

Tudo que Edson Luiz Branco postou

  1. @mcoumiotis , faça um teste: =SOMA((TRANSPOR('DADOS 1'!B2:B5)=B2:B9)*TRANSPOR('DADOS 1'!A2:A5="SIM")*A2:A9) A fórmula é matricial, portanto finalize com CTRL + SHIFT + ENTER ao invés de só ENTER, caso seu Office seja inferior ao 365.
  2. Mais uma opção: Sub CopiaIntercalados() Dim rTbl As Range, rTot As Range, rTmp As Range, nomes As Variant, nome As Variant nomes = Array("tipo", "marca", "genero", "quantidade") Set rTbl = Workbooks("EXEMPLO.xlsx").Worksheets("Sheet1").[A12].CurrentRegion For Each nome In nomes Set rTmp = Intersect(rTbl, rTbl.Rows(1).Find(What:=nome, LookAt:=xlWhole).EntireColumn) If rTot Is Nothing Then Set rTot = rTmp Else Set rTot = Union(rTot, rTmp) Next nome rTot.Copy Destination:=Workbooks("EXEMPLO2.xlsx").Worksheets("Sheet1").[A12] Application.CutCopyMode = False End Sub
  3. Você esqueceu de desbloquear a Pasta de Trabalho Excel antes de desbloquear a planilha, @marcospires1, como bem lembrou o amigo @Patropi na resposta anterior : Sub Cadastro_Novo() ThisWorkbook.Unprotect Password:="123" ... End Sub Não esquecer de voltar a proteger no final.
  4. @marcospires1 , tente apenas jogar a linha que torna a planilha visível para baixo da que desbloqueia.
  5. Uma sugestão @Miguelriedel , caso você já possa prever a quantidade máxima de itens que no limite poderiam surgir, seria em Tempo de Design inserir todos os controles nas respectivas posições mas deixá-los com a propriedade Visible = False e a cada nova inserção tornar Visible = True para revelar a respectiva linha de controles anteriormente oculta. A vantagem aqui é que os eventos desses controles seriam programáveis já em Tempo de Design. Por exemplo: você não conseguiria programar o evento Click de um botão "Lançar Insumos" recém adicionado (em Tempo de Execução) se ele ainda não estiver presente no UserForm. Mesmo que você já tenha o código pra ele digitado no VBE, pelo fato do objeto não existir no momento em que o VBA compila seu código, o bloco de código é simplesmente ignorado e tratado como um mero texto. Caso isso não seja possível, para que novos controles sejam adicionados em Tempo de Execução e ainda assim reajam a eventos, é necessário recorrer a criação de Classes para essas famílias de controles (Módulo de Classe).
  6. @ThiagoMagalhães0, como o Sumário nada mais é do que um Campo, experimente os atalhos CTRL T (isso seleciona todo o texto do documento) seguido de F9 (atualiza o(s) campo(s) selecionado(s)). Para outras opções, veja por exemplo: Updating Fields Automatically - {Allen Wyatt}
  7. Também não entendi, @DaviH. Procure incluir no seu arquivo uma nova aba, cópia da atual, mostrando, manualmente mesmo, como teria que ficar no final (o "depois") essa transformação de seus dados e o resultado e também como você chegou ao dito resultado, que colunas utilizou, que critérios, etc. Lembre-se que muitos aqui podem ter bons conhecimentos de Excel, mas desconhecem completamente o significado do conteúdo de suas planilhas.
  8. Não seria por acaso algum suplemento ou seu modelo inicial (PERSONAL.xlsb) que está carregando na inicialização do Excel? Veja no VBE na Janela Project Explorer (CTRL R) quais os projetos carregados logo que você abre o Excel, sem ter aberto arquivo nenhum. Havendo algum que não sejam os instalados com o Excel (Solver.xlam, etc...) veja se não há em algum deles alguma rotina no Workbook_Open(). Também veja por dentro do Excel (Arquivo>Opções>Suplementos) outros suplementos que possam estar carregados que não os normais do Excel (Power Pivot, etc.).
  9. Na verdade não é uma imagem editável e sim uma tabela que está por cima de uma imagem. Então a largura das colunas da tabela você pode alterar, mas da imagem você não vai conseguir alterar no Word (só a duríssimas penas, mas melhor num editor de imagem qualquer). Para melhorar a visualização disso, mude provisoriamente a cor de fundo da imagem para uma cor mais escura enquanto ajeita a largura da tabela: clique em qualquer lugar da imagem e no menu de contexto que aparece ("Ferramentas de imagem"), no grupo "Ajustar" clicando no botão "Cor" escolha uma que mais revele a tabela que está por cima. Ligue também o "Mostrar Tudo" (CTRL * do teclado alfabético ou botão ¶ também chamado de pi/pilcrow/pé-de-mosca). Mas acho que o melhor mesmo é ocultar a imagem enquanto trabalha na tabela: "Página Inicial" > grupo "Editando" > clique no botão "Selecionar" e escolha "Painel de Seleção...". No painel lateral que abre à direita, clique no botão do olho ao lado do objeto "Imagem 3" para ocultar. Um detalhe que verifiquei é que como sua tabela tem células muito estreitas, talvez seja melhor configurá-la deixando-a sem margens internas nas células. Outra dica: para alterar a largura das colunas da tabela de modo mais suave/contínuo, mantenha a tecla ALT pressionada enquanto move a largura das colunas.
  10. Isso ocorre porque como o range já foi "desmesclado" na etapa imediatamente anterior (lCel.MergeArea.UnMerge), então a etapa seguinte (lCel.MergeArea.Formula = ...) não conterá mais uma área mesclada em que aplicar a fórmula, mas sim uma célula única. Para evitar isso ou você guarda o bloco mesclado numa variável temporária antes de explodi-lo ou usa um bloco With/End With. Exemplo: Sub ReplicaConteúdoMescladas() Dim lCel As Range Dim lRng As Range Set lRng = Sheets("Plan1").Range("A1:L1000") For Each lCel In lRng If lCel.MergeCells Then With lCel.MergeArea .UnMerge .Formula = lCel.Formula End With End If Next End Sub
  11. Parece que está faltando um par de aspas duplas logo antes do primeiro E comercial: Range("A1").Formula = "=PIArcVal(""\\FTHSERVER\BWF_530BWF01.TT"",""" & -HORA & "h"",0,"""",""auto"")"
  12. Uma alternativa para agilizar seria também, se o problema for performance e muito recálculo na planilha principal, criar uma planilha oculta que esteja linkada apenas ao grupo de células que sofre atualização pelo RTD e usar somente nessa oculta a armadilha de evento Calculate. Dessa forma, Calculate não é disparado em outros recálculos da principal, somente quando vêm dados externos. Por exemplo, se a alimentação do RTD atualmente entra na planilha principal nas células A1 e A2, a planilha oculta teria uma fórmula = Principal!A1 e outra =Principal!A2 e mais nada. Ela só sofreria recálculo na entrada de novos dados via RTD. E como seu algoritmo nada mais é do que uma fila FIFO (First In/First Out) ou seja, o primeiro a entrar é o primeiro a sair (PEPS), daria muito bem pra aplicar um objeto Queue da biblioteca do Windows System.Collections, muito rápida e feito sob medida pra essas situações, o que poderia talvez agilizar ainda mais o processo (suponho).
  13. Então seria só você se certificar e garantir que a CapsLock esteja ativa antes de iniciar a sequência de envios de pressionamentos de teclas, correto? Como sugestão para resolver isso, você poderia tentar usar uma velha API do Windows para ver se está ligada ou desligada. Bem no topo de seu módulo (área de Declarações), insira a seguinte chamada à API GetKeyState: Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer E no seu código, dê uma vez só o comando pra ligar CapsLock, mas somente se estiver desligada: If Not (GetKeyState(vbKeyCapital)) Then Application.SendKeys "{CAPSLOCK}" Outra opção talvez seja transformar em maiúscula o conteúdo da célula diretamente, quem sabe funcione: Application.SendKeys UCase(.Range("E" & Lin).Value)
  14. Sim, ela não mexe no conteúdo de outras: não é volátil, pois não contém fórmula.
  15. Sim, ficaria então AGOSTO/2022, sem o dia, correto? Só é necessário que a célula seja formatada como texto antes de aplicar o maiúsculo. Altere a segunda rotina incluindo a linha e alterando a outra, ficando assim: Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Me.Worksheets.Count > númPlans Then Sh.[F5].NumberFormat = "@" Sh.[F5].Value = UCase(Format(DateAdd("m", 1, Date), "mmmm/yyyy")) End If númPlans = Me.Worksheets.Count End Sub
  16. @JorgeSouza, isso só é possível ser feito através de VBA (macro), não por fórmulas. No VBA, insira o seguinte código na classe "EstaPastaDeTrabalho": Dim númPlans Private Sub Workbook_Open() númPlans = Me.Worksheets.Count End Sub Private Sub Workbook_SheetActivate(ByVal Sh As Object) If Me.Worksheets.Count > númPlans Then Sh.[F5].Value = DateAdd("m", 1, Date) End If númPlans = Me.Worksheets.Count End Sub Não esqueça de habilitar macros ao abrir o anexo. Dúvida @JorgeSouza-ClubeDoHardware(EdsonBR).zip
  17. Favor esclarecer esse ponto do primeiro Post...: Com relação a esse do segundo Post: Na célula vai a "data atual", ou seja, a data com dia/mês/ano do momento em que foi criada a nova planilha, ou a data na forma mês/ano referente ao mês + 1? Ou é o mesmo dia e ano só que mês + 1?...
  18. @Vics, já tentou verificar se existe e desinstalar os Suplementos (AddIns) de terceiros de seu Word? Arquivo > Opções > Suplementos ou em Desenvolvedor > grupo "Suplementos" O "FLIR" deve ser de algum dispositivo térmico (câmera térmica infravermelha, por exemplo), o outro de algum editor PDF talvez...
  19. Boa tarde colegas! Não cheguei a analisar os códigos e toda a problemática, mas a respeito dessa última situação, uma possibilidade que também poderia interferir é que, apesar de a cópia/colagem de valores puros não dispararem o evento Calculate nas células destino, se existirem células que dependam direta ou indiretamente delas (ou seja, se estiverem no caminho ou árvore de dependência) então o recálculo ocorrerá e o processo ficará em loop momentâneo, possibilitando que os valores fiquem indesejavelmente repetidos. Talvez fazer então um teste desligando a armadilha de eventos imediatamente antes de colar os valores (com Application.EnableEvents = False) e religando em seguida (Application.EnableEvents = True)...
  20. Ok, mas se você baixar o anexo e observar as fórmulas, fiz as 3 modalidades uma embaixo da outra pra comparação... Inclusive a 2ª tabelinha usa a mesma fórmula que a que o amigo @Patropi usou.
  21. Bom dia, @Lusitano Se entendi corretamente, você quer resumir ou consolidar os dados agrupando e somando os semelhantes numa coluna ao lado, correto? A opção mais direta e imediata e que não necessita fórmula penso que seria via Tabela Dinâmica, com seus prós (disponibilidade em todas as versões) e contras (temperamental/inflexível, formatação limitada, atualização não é "dinâmica", poucas funções de agregação, embora pra soma, como é o caso, seja tranquilo). Via fórmula, é necessário primeiramente gerar uma lista dos elementos exclusivos da coluna REFERENCIA. Se você tem disponível o Excel 365 em diante é muito fácil com a nova função ÚNICO que extrai diretamente os exclusivos e os despeja já num intervalo dilatado no tamanho correto, sem necessidade de arrastar a fórmula (desde que haja espaço vazio suficiente). Outra vantagem é que dá pra combinar com a também nova função CLASSIFICAR se quiser os dados ordenados. Se seu Excel for mais antigo, tem que usar uma combinação de funções (ÍNDICE/CORRESP/CONT.SE/SEERRO ou outras combinações, conforme a abordagem preferida). A desvantagem é que tem que arrastar a fórmula a um intervalo de linhas maior tentando prever o máximo de exclusivos que poderiam existir numa possível expansão dos dados. Em ambos os casos, a soma das QTD's faria normalmente com a função SOMASE já referida. Power Query (Obter-e-Transformar) também poderia ser empregado, mas requer que os dados estejam em uma Tabela, não num intervalo ordinário como é o caso. Via VBA em casos em que a frequência com que a mesma tarefa seja executada justifique, além de outras motivações. Consolidar_e_Somar_Intervalo.xlsx
  22. Se não me engano, você consegue Editar sua postagem e eliminar o anexo. Aí seria somente anexar outro no lugar.
  23. Se me permite a sugestão, @miltonmmjr, você nem precisaria macro pra essa substituição. Utilizando coringas dá pra fazer em 2 operações: uma do 00 ao 49 e uma manual só pra ocorrência exata do 50 (evitando a substituição de possíveis ocorrências 51 a 59, caso existam). A do 50 então você faz uma substituição sem coringas mesmo. Já para as de 00 a 49, no diálogo Substituir, ative a opção "Usar caracteres coringas" e use os seguintes códigos: Em Localizar: (.[0-4][0-9];) Em Substituir: \1^p você pode incrementar e refinar essa substituição, por exemplo, evitando a desnecessária substituição onde já exista parágrafo após a expressão. Nesse caso, poderia usar: Em Localizar: (.[0-4][0-9];)([!^13]) Em Substituir: \1^p\2
  24. Como C = B/(A/12) ∴ C = 12.B/A. C deverá ser 6 quando A for (A + x) e B = (B - x) Portanto: Como C = 12.B/A então, substituindo: 6 = 12.(B - x)/(A + x) Fazendo os algebrismos necessários, ficamos com: x = (2B - A)/3 Substituindo as letras pelas das referências das células, a fórmula na célula N8 ficará: =(2*D10-D6)/3
  25. Que tamanho em disco tem seu arquivo Excel? Quantas Formatações Condicionais e outras formatações têm nos intervalos? Lembrar que o gigantismo e lentidão em uma planilha na maioria dos casos está relacionado à profusão de formatos aplicados, fórmulas em excesso ou que abrangem intervalos desnecessariamente dilatados (até a última linha/coluna possível) ou, obviamente mas menos frequente, a quantidade de dados. Existem objetos em suas planilhas (formas, figuras, fotos coladas, )? Para verificar isso, ative o "Painel de Seleção" (guia "Página Inicial", no grupo "Edição" clicar no botão "Localizar e Selecionar", item "Painel de Seleção"). É bastante comum, principalmente quando informações de internet são coladas nas células, pequenos objetos transparentes (portanto invisíveis) acabarem pegando carona e infestando seu arquivo com lixo, gerando lentidão. Ainda, pra tentar isolar e identificar o problema: Se você fizer esse procedimento de Copiar-e-Colar mas em outro PC o problema persiste? E se o arquivo estiver num pen-drive acontece também? Como o colega Roberto disse anteriormente, Office corrompido pode causar essa falha mas quando há corrompimento o mais frequente é o arquivo e não o Office estar corrompido. Formatar a máquina, a meu entender é a última das últimas coisas que faria (não formato meu PC pelo menos a uns 8 anos). Mas o simples teste acima, o de executar em outra máquina e/ou o de mover para outra unidade já podem ajudar a diagnosticar onde está o problema: se no arquivo ou na sua máquina. E se na sua máquina, se no HD (setores defeituosos) , memória ou no próprio Office.

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!