Ir ao conteúdo
  • Cadastre-se

Edson Luiz Branco

Membro Pleno
  • Posts

    844
  • Cadastrado em

  • Última visita

Tudo que Edson Luiz Branco postou

  1. Bom dia, @Daniela.Dias Como você gostaria que fosse feita essa checagem? Ao Salvar a pasta, percorrer as linhas que estão incompletas e impedir o salvamento até completar? Ou ao iniciar o preenchimento de uma linha, em qualquer campo que seja, não permitir que outra linha seja iniciada até que a anterior esteja concluída? Quais dos campos são obrigatórios e quais são opcionais?
  2. Bem vindo ao fórum Office do Clube do Hardware, @Eduardo Fernandes Brandão Defina a permissão para usar filtro com True para a planilha ao protegê-la novamente: ActiveSheet.Protect "123abc", AllowFiltering:=True _____________________________________________________ Se me permite, uma sugestão: como seus dados estão num objeto tabela (ListObject para o VBA), utilize fórmulas com Referência Estruturada ao invés de Referências Relativas/Absolutas. Então, ao invés de: =SE(K5="";"";SE(SE(L5="";K5;M5)=HOJE();"VENCE HOJE"; SE(SE(L5="";K5;M5)<HOJE();"ATRASADO"; SE(L5="";K5;M5)-HOJE()&" DIA(S) PARA VENCER"))) Transforme para linguagem de tabela: =SE([@FINAL]="";""; SE(SE([@INICIAL2]="";[@FINAL];[@FINAL3])=HOJE();"VENCE HOJE"; SE(SE([@INICIAL2]="";[@FINAL];[@FINAL3])<HOJE();"ATRASADO"; SE([@INICIAL2]="";[@FINAL];[@FINAL3])-HOJE()&" DIA(S) PARA VENCER"))) Além de ser a forma mais correta de usar fórmulas quando se trata de tabelas, a inserção de novas linhas pelo VBA fica facilitada pois dispõe de um método específico que já aplica corretamente a fórmula às colunas onde for pertinente, inclusive com a formatação zebrada. A linha oculta onde você mantém a fórmula pra ser copiada/colada pode ser então eliminada, pois não é mais necessária. Seu código para o botão "Adicionar Linha" ficaria então assim: Sub Copiar2() ActiveSheet.Unprotect "123abc" ActiveSheet.ListObjects("Tabela1").ListRows.Add ActiveSheet.Protect Password:="123abc", AllowFiltering:=True End Sub
  3. Bom dia, colegas. Pra não precisar criar colunas auxiliares, dá pra usar as funções ÍNDICE e CORRESP ao invés da PROCV (vide anexo). Acessos Refeitório (EdsonBR).xlsx
  4. Bom dia, @beatrizcostacurta Essas fórmulas só dariam certo se você tivesse começado a tabela na coluna B e não na C e também na linha 1 e não na 2. Mova todo o conjunto para o intervalo correto e reaplique as fórmulas ou desloque as referências nas fórmulas para se ajustarem à nova disposição.
  5. Boa noite, @guicrissantos Nesse caso, você pode retornar diretamente o caminho em que sua pasta de trabalho Excel está através da propriedade ThisWorkbook.Path e usá-la, sem precisar ficar informando ao iniciar. Ex.: Sub ExportarHorasNormais() ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=ThisWorkbook.Path & "\" & Range("B31") & "_" & Format(Now, "yyyymmdd_hhmmss"), _ Quality:=xlQualityStandard, _ IncludeDocProperties:=True, _ IgnorePrintAreas:=False, _ OpenAfterPublish:=False MsgBox "Relatório de APONTAMENTO DE HORAS salvo com sucesso!", vbOKOnly End Sub
  6. Testei aqui importando seu CSV, onde essa data 01-01-2019 00:00:00 já aparece na primeira linha de dados (célula B2). Se usar a célula K2 pra fazer a subtração com a fórmula = B2 -3/24 o resultado já aparece corretamente como 31/12/18 21:00 Portanto teria que analisar qual fórmula você está usando que está trazendo esse erro.
  7. O colega @deejaywesley tem razão, @heliofernandesch. Para contornar esse problema, use um artifício na fórmula para converter o valor procurado a texto. Em F2 da "Orçam-1.Etapa" teste: =SEERRO(PROCV( "" & E2;Compos.Sinapi!$A$2:$E$10000;2;FALSO);"ERRO")
  8. Bem vindo ao nosso fórum, @Phernando Machado Só complementando... Uma constante matricial pode ser de uma só coluna ou vetor-coluna (ex: {"Número";8;2;4}), pode também ser de uma só linha, tal como um cabeçalho. Nesse caso é um vetor-linha (ex: {"Número" \ "Letra"\"Cor"}). E finalmente pode ser nas duas dimensões ou matriz (ex.: {"Número"\"Letra"\"Cor";8\"A"\"Azul";2\"B"\"Verde";4\"C"\"Branco"}) Então, respondendo à sua pergunta, a barra invertida delimita ou separa uma coluna de outra numa constante matricial, enquanto que o ponto-e-vírgula separa linhas. Para demonstrar, faça um pequeno teste: Numa planilha vazia, selecione o intervalo A1:C4 Com o intervalo ainda selecionado, insira a seguinte fórmula na célula A1: ={"Número"\"Letra"\"Cor";8\"A"\"Azul";2\"B"\"Verde";4\"C"\"Branco"} Não dê ENTER, mas CTRL SHIFT ENTER (se seu Excel ainda não tiver o recurso de "Despejo", disponível no 365 em diante) Observações: A barra invertida (" \ ") passou a ser usada como separador de coluna no Excel em português à partir do 2007 (ou foi no 2010). Antes era o ponto (" . "), embora um erro (bem antigo por sinal) de tradução do help do Excel afirmasse que deveria ser usada a vírgula (essa é só pro Excel norte-americano) . Já o ponto-e-vírgula como separador de linha é unanimidade tanto entre versões antigas/atuais como em versões locais/estrangeiras.
  9. Boa tarde, @Mark Streuber Qual o conteúdo de C2 e C3? São números inteiros? Se forem texto ou números de ponto flutuante a condição pode não se verificar, mesmo aparentemente atendendo à condição. Por exemplo: se em C2 você tivesse o valor 43,2 e em C3 o valor -43,1, caso você tentasse comparar o valor de C2 + C3 com o resultado 0,1 a comparação falharia (o resultado seria FALSO), pois internamente o resultado da operação estaria dando 0,100000000000001 (devido ao conhecido problema da aritmética de ponto flutuante).
  10. Bem vindo ao fórum Clube do Hardware, @Alexandre F. Possivelmente ninguém respondeu até o momento por não ter entendido seu problema e o que você espera obter. Para facilitar, anexe um modelo com sua dúvida e mostre com detalhes, manualmente mesmo, passo a passo qual a sequência de resultados e a resposta final que você espera obter dos seus dados. Lembre-se que apesar de termos algum conhecimento razoável do Excel, desconhecemos por completo a natureza de seu projeto (pelo menos de minha parte, não entendi o que você espera).
  11. Bem vindo ao fórum Clube do Hardware, @DennerSantos Infelizmente seu arquivo está severamente corrompido de forma que, pelo teste que fiz, nem a ferramenta de reparo nem salvá-lo como .xlsb resolveriam. Veja pela imagem abaixo que a estrutura de seu arquivo contém 5 Workbooks! É como se fossem 5 arquivos Excel dentro de um só, o que obviamente é absurdo por ser impossível. Penso que recriar seu projeto do zero seria a forma mais sensata para eliminar todos esses erros.
  12. Mais uma: Private Sub CommandButton1_Click() Dim rgPerfLam As Range, i As Long With Worksheets("Perfis lam. gerdau") Set rgPerfLam = .Range(.[A4], .[A4].End(xlDown)) End With With Worksheets("calculo") .Range(.[T6], .[T6].End(xlDown)).Resize(, 3).ClearContents Application.ScreenUpdating = False For i = 1 To rgPerfLam.Cells.Count .[H5] = rgPerfLam.Cells(i).Value .[T5].Offset(i, 0) = .[H5] .[T5].Offset(i, 1) = .[M13] .[T5].Offset(i, 2) = .[M5] Next i Application.ScreenUpdating = True End With End Sub
  13. Só uma observação: a função ÚNICO só está disponível à partir do Office 365. Se seu Office for de versões anteriores o erro #NOME? aparecerá na primeira atualização que as células sofrerem.
  14. Boa noite e bem vindo ao fórum do Clube do Hardware, @Lito8581 Manualmente: Selecione o intervalo todo B2:B24...; Tecle F5 > botão Especial ...(Ir Para Especial) ou vá na guia Página Inicial > grupo Edição, clique no botão Localizar e Selecionar e escolha Ir Para Especial... > e escolha a opção "Em branco"; Na célula que ficou ativa (B4), digite a fórmula = B3 (que é a célula acima); Não finalize com ENTER, mas com CTRL ENTER e está feito. Para eliminar as fórmulas que agora não serão mais necessárias, copie todo o intervalo para a Área de Transferência e cole em cima dele mesmo com a opção Colar Especial... > Colar Valores; Opcionalmente você poderia usar uma coluna ao lado, por exemplo "C" e em C3 poderia usar a fórmula =SE(B3="";B2;B3) e arrastar p/ baixo. Depois é só copiar e colar valores sobrepondo-os à coluna B. Feito isso é só eliminar a coluna "C" pois já não é mais necessária.
  15. Boa noite, @paulotuca .xlsm o robô do site não aceita. Mas você pode zipar antes de anexar que vai normalmente.
  16. Boa noite, @SkaterGirl você também pode usar a função SOMA ao invés da adição individual de parcelas. A vantagem é que a função SOMA não gera erro quando as células estão com texto como no seu caso (mesmo sendo uma sequência vazia, "" é considerada como texto: você pode checar isso através da função ÉTEXTO se desejar). Então, ao invés de: =SE(E(E6="";I6="");"";E6+I6) você poderia usar: =SE(E(E6="";I6="");"";SOMA(E6 ; I6)) Pode fazer isso com subtrações também, desde que use apropriadamente o sinal negativo (para o subtraendo, obviamente). Se seu objetivo é apenas não mostrar zero nas células em que o resultado for zero, pode usar formato de número personalizado ou de outra forma desmarcar a opção "Mostrar um zero nas células cujo valor é zero" para a Planilha1 (Arquivo > Opções > Avançado).
  17. Boa noite, @Ozorio Pureza Experimente o atalho de teclado CTRL F1.
  18. Podes formatar a saída da seguinte forma: UserForm2.num_saida2.Text = "NS" & Format(cont, "0000")
  19. em e4 depois arraste: =se(e(d4>=data(ano(d4);mês(d4);21);d4<=(fimmês(d4;0)+20));fimmês(d4;1)+5;fimmês(d4;0)+5) teste, depois dê retorno, ok? Obs.: o robô do Clube do Hardware arbitrariamente tem convertido o que escrevemos em maiúsculas, como as fórmulas do Excel, tudo pra minúsculas. Uma pena. Vai desculpando aí.
  20. Boa tarde, @Jovito Em seu exemplo, por qual motivo você concluiu que o dia de pagamento era dia 05 e não 25 ou outro dia qualquer? E qual o resultado se a data de recebimento não estiver entre o dia 21 de um mês e 20 do próximo? Sempre anexe um modelo com alguns dados preenchidos e já com as respostas desejadas, mesmo que de forma manual, para podermos melhor identificar o raciocínio por trás do problema.
  21. No seu primeiro código seria só alterar de LookAt:=xlWhole, para LookAt:=xlPart
  22. Boa noite, @deejaywesley Naquele trecho, substitua por: ... If Not Intervalo Is Nothing Then Application.Goto .Worksheet.Cells(Intervalo.Row, "J"), True End If ... Ou: ... If Not Intervalo Is Nothing Then .Worksheet.Cells(Intervalo.Row, "J").Select End If ...
  23. Bem vindo à sala Microsoft Office do fórum Clube do Hardware, @FReis Mas de onde vem essa informação? Ela muda o tempo todo variando o que? Dê mais exemplos e detalhes, de preferência anexe um arquivo demonstrando, mesmo que manualmente, desenhando se necessário, como você desejaria que fosse esse menu e qual seria a fonte das opções. Qual a versão do seu Excel?

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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!