Ir ao conteúdo
  • Cadastre-se

Edson Luiz Branco

Membro Pleno
  • Posts

    840
  • Cadastrado em

  • Última visita

Tudo que Edson Luiz Branco postou

  1. Ah, você tá usando uma UDF, então o problema da cor já está todo solucionado. Se seu problema é não variar a referência ao arrastar, use referência absoluta, nesse caso: =CountCcolor(B4:G4;$AF$2) Usando o cifrão na frente da referência da coluna trava a coluna ao arrastar a fórmula, mas deixa crescer a linha. Usando na frente do número da linha, trava a linha mas deixa alterar a coluna. Usando em ambos, a referência à célula fica fixa. O atalho é, estando com o cursor sobre a referência, teclar F4 repetidas vezes (de 1 a 4) até chegar ao desejado.
  2. Sério mesmo que você deu essa resposta??? Allan, cada cor de fundo tem um código diferente, e mesmo sendo um azul conforme a imagem que você colou aqui, há milhares de tonalidades no espectro do azul que podem ter sido usadas, combinações de vermelho, verde, azul (RGB) (veja na figura abaixo). Sei que existem ferramentas tipo ColloPicker para identificar uma cor de um ponto que está na página aberta do navegador, aí seria torcer para que a cor tenha ficado fiel à que estava em sua planilha, converter, etc., mas peraí! Pra que nos dar essa trabalheira toda? Por isso pedi para que você anexasse um arquivo com o que você está usando agora. Remova informações confidenciais, mas mantenha a estrutura. Nos ajude a te ajudar.
  3. @jeffsilva.silva , boa noite. Para deixar bem "amarrado": Selecione as cinco colunas inteiras da planilha onde está a tabela (Planilha1, colunas de A:E) e dê um nome ao intervalo: Guia Fórmulas, grupo Nomes Definidos, Definir Nome, insira, digamos TabelaCódigos e em Refere-se à: =Planilha1!$A:$E. Na Planilha2, na 1ª célula à direita de onde você vai inserir o código de barras (supondo que o C.B. estará na coluna A, então inicie na célula B3), insira a fórmula: =SEERRO(PROCV($A3;TabelaCódigos;COL()-COL($A3)+1;FALSO);"") 3. Arraste para a direita pelas próximas colunas e abaixo até o número de linhas necessarias. planilha de teste.xlsx
  4. @RickW , se entendi, é só usar a função MÁXIMO. Em E3, insira a fórmula depois arraste: =MÁXIMO($F3:$AT3)
  5. @ALLAN CALHEIROS , só é possível fazer o que você quer por VBA. Não há fórmula para detectar a cor de fundo. Mas pra isso você precisa anexar um arquivo do que você quer, pois um dos motivos é não sabermos que tonalidade de cada cor você está usando em suas célula (existem muitas variações).
  6. Boa noite, @Natalia Nogueira , seja bem vinda. Uma saída seria: =SOMARPRODUTO(ÉPAR(LIN($A1:$A6)-LIN($A$1))*$A$1:$A$6*DESLOC($A$1:$A$6;1;0))
  7. Às vezes os links estão num intervalo nomeado, às vezes numa regra de validação, às vezes numa formatação condicional e logicamente o mais trivial, em células. Como você não anexou nenhuma pasta de trabalho Excel, tente procurar nesses locais pelos caracteres que aparecem no caminho do arquivo exibido na janela de links. Se algumas estão com essas opções desabilitadas, pode ser que tenha intervalos/planilhas/pasta protegidos ou arquivo aberto no modo somente leitura...
  8. Seja bem vindo, @Thiago Graziele Você só pode filtrar por Array se for só string de valores, não com um operador condicional junto, pois senão o Excel só iria considerar o último elemento do Array como condição. Seguindo esse raciocínio, digamos que você quisesse apenas os números -1, 1 e 3. Então, isso funcionaria: Selection.AutoFilter Field:=12, Criteria1:=Array("-1", "1","3") , Operator:=xlFilterValues Já para seu caso, sendo dois critérios, teria que usar Selection.AutoFilter Field:=12, Criteria1:="<0", Criteria2:=">0", Operator:=xlOr Mas, se só existirem números, seria necessário apenas filtrar o que é não-zero, então simplificaria: Selection.AutoFilter Field:=12, Criteria1:="<>0"
  9. @Diego São João , nesse caso não precisaria nem de macro, se fosse aceitável que, ao invés de um botão, fosse um controle incremental tipo botão de rotação ou barra de rolagem. Na guia Desenvolvedor, grupo Controles, clique em Inserir e escolha o controle Barra de Rolagem entre os Controles de Formulário. Na sua planilha AÇÃO, clique para inserir o controle na célula desejada (se quiser que ele se encaixe perfeitamente com as células, mantenha ALT pressionada enquanto posiciona). Clique com o botão direito sobre o controle > Formatar Controle e defina: Valor mínimo: 1 Valor máximo: Estime o valor máximo de registros que sua tabela pode atingir - entre 1 e 30000 (procure não exagerar, pois quanto menor, visualmente ficará melhor a barra depois). Alteração incremental: 1 (de 1 em 1) Mudança de página: 10 (de 10 em 10) Vínculo da Célula: Escolha uma célula em branco disponível. Para que ela não apareça, pode colocar na própria célula em que está o controle, ficará atrás dele. Colocando num lugar visível terá a vantagem de você poder saltar diretamente para o registro desejado. Suponhamos que seja a célula G4. Supondo que sua tabela esteja na planilha Dados, colunas de A até F, a fórmula sob: Protocolo: =ÍNDICE(DADOS!$A:$D;$G$4+1;1) CPF: =ÍNDICE(DADOS!$A:$D;$G$4+1;2) Cliente: =ÍNDICE(DADOS!$A:$D;$G$4+1;3) Telefone: =ÍNDICE(DADOS!$A:$D;$G$4+1;4) Além da barra deslizante, experimente também alterar o valor direto na célula G4. (Anexo) Dúvida Diego São João - CdH.xlsx
  10. Seja bem vindo, @Kenne Bottega Experimente esta fórmula na célula correspondente na Tabela1: =SOMARPRODUTO((Tabela1[[#Esta Linha];[Estado]]=Tabela2[Região])*(Tabela1[[#Esta Linha];[Peso para cálculo de frete (Kg)]]>=Tabela2[Peso Mínimo])*(Tabela1[[#Esta Linha];[Peso para cálculo de frete (Kg)]]<=Tabela2[Peso Máximo])*Tabela2[Preço Frete])
  11. Olá, @lufferj Que eu saiba, diretamente não dá, mas você pode usar um artifício: Numa área em branco contínua que você não vai usar de sua planilha, digamos em Z1, referencie essas células depois use esse intervalo como base para a validação. Fórmula em: Z1: =A1 Z2: =D1 Z3: =G1 Fonte para Validação da Lista: =Z1:Z3 Aí é só ocultar a coluna Z, se necessário.
  12. Que bom que foi útil. Se seu problema está resolvido, favor marcar o tópico como resolvido, na barra lateral esquerda. (Veja como em "Função "marcar como resolvido").
  13. Sim, iria. Faça um teste num documento novo e digite análise análise por exemplo e faça o procedimento. Agora tem um problema: Análise será avaliado diferentemente de análise (primeira letra maiúscula x minúscula). Então para contornar esse problema, só para efeito de localizar, transforme seu texto todo para maiúsculas (ou todo para minúsculas) antes de proceder à localização. Faça assim: Selecione todo o texto (CTRL+T) e use a combinação de teclas SHIFT+F3 até ficar tudo em maiúsculas, por exemplo. Aí faça a localização como no tópico anterior com o texto todo em maiúsculo. Lembre-se de não salvar o arquivo depois. Para forçar o Word a localizar apenas palavras que tenham pelo menos 2 caracteres repetidos mude o padrão anterior e passe a usar: (<*{1;}>) @\1 assim ele deixaria de casar o objetivo ou a análise e passaria a localizar apenas, digamos, ou outro, as asas, etc. E assim sucessivamente aumentando o número em {1;}.
  14. Essas duas palavras estão separadas apenas por um ou mais espaços em branco simples? Se sim, no Word abra a caixa Localizar avançada (CTRL+L). Clique no botão Mais>> e selecione a opção Usar caracteres coringa. Na caixa Localizar, digite: (<*>) @\1 Observe que há um espaço em branco antes do @. Clique em Localizar. Vai demorar bastante, já te aviso... Se você quiser não só localizar, mas substituir as duas ocorrências da palavra por uma só, repita o processo acima mas clique na guia Substituir e, na caixa Substituir por, digite: \1 Aí é só clicar no botão Localizar para encontrar e/ou em Substituir/Substituir Todas que todas as palavras ou grupo de palavras repetidas serão substituídas por uma só. Se não der certo avise.
  15. Claro, amigo. É só clicar com o botão direito na área do Userform e escolher "Ordem de Tabulação" e mover as posições para cima e para baixo. Ou, individualmente selecionando cada controle e definindo em tempo de design a propriedade TabIndex (começando em 0). Para evitar que um controle receba foco ao teclar Tab, pode definir ainda a propriedade TabStop como False.
  16. Fala, @diego_janjao ! Tem que mencionar o caminho junto com o nome do arquivo. Como é o mesmo da pasta de trabalho do código, dá pra usar ThisWorkbook.Path pra retornar o caminho. Fica então: Set Wb = Excel.Application.Workbooks.Open(ThisWorkbook.Path & "\" & "Gestão de SAC - Categorizado.xlsb") Wb.Sheets("COLAR DADOS").Activate
  17. A sintaxe da fórmula está errada. No Excel, quando uma fórmula faz referência à outra planilha da mesma pasta de trabalho, se o nome for composto (tiver espaços) ou se contiver números, tem que colocar o nome entre apóstrofos ( ' ). Veja em Visão geral de fórmulas no Excel, tópico "Fazendo referência a um intervalo de células em outra planilha na mesma pasta de trabalho". Então a expressão ficaria: ActiveCell.FormulaR1C1 = "=IF(5>=COUNTIF('" & N & "'!R4C4:R11C4,""teste""),""CORRETO"",""ERRADO"")" (como o apóstrofo é um caractere pequeno, talvez você tenha que dar zoom na fórmula acima para percebê-lo). Não faz mal deixar os apóstrofos para o caso da célula só ter uma palavra, pode deixar permanentemente na expressão.
  18. O @CasaDoHardware tem toda a razão. É muito ruim ter que imaginar como estão suas planilhas e tentar adivinhar só por um fragmento mínimo de código o que pode estar causando o mal funcionamento. Se anexar, vai facilitar...
  19. É mais cômodo colocar numa variável para não ficar muito longa a cadeia. Também pode ficar mais rápido, pois o VBA não precisaria avaliar a expressão cada vez que ela surge, principalmente se tiver muitas ocorrências dela. Para usar na forma original: ActiveWorkbook.Worksheets(Range("NOME1").Value).Sort.SortFields.Clear ....... É estranho mas necessário, já que você está utilizando a propriedade FormulaR1C1 que é do tipo String. Portanto tudo que você colocou entre as aspas iniciais e finais é usado do jeito que está, nada que está ali dentro é avaliado como uma expressão durante o processamento da macro. Por isso foi necessário quebrar a cadeia na parte inicial, fixa ("=IF(5>=COUNTIF("), na parte intermediária, avaliada em tempo de execução (N ou se preferir Range("NOME1").Value), e na parte final, novamente fixa ("!R3C4:.........") e concatenar essas 3 partes com o & (ou +) para que a string total tenha a parte "interna" variável. O que foi feito foi simplesmente dizer: a = "=IF(5>=COUNTIF(" b = Range("NOME1").Value c = "!R3C4:........." chegando a ActiveCell.FormulaR1C1 = a & b & c (ou a + b + c) Um detalhe. você pode desprezar a propriedade .Value e usar só Range("NOME1") se achar melhor, já que é a propriedade padrão. Preferi deixar qualificado para ilustrar que o que retorna é o valor da célula nomeada (mais clareza), mas é opcional.
  20. É continuação do problema do seu outro tópico? Agora tem elementos novos que não haviam antes. Supondo uma variável String, digamos N: Dim N As String Para retornar o conteúdo de uma célula nomeada: N = Range("NOME1").Value No seu caso, então: ActiveWorkbook.Worksheets(N).Sort.SortFields.Clear ....... ActiveCell.FormulaR1C1 = "=IF(5>=COUNTIF(" & N & "!R3C4:......... Para retornar o nome da planilha em que a célula nomeada está, dá pra usar N = Range("NOME1").Parent.Name
  21. Aí o evento Change não teria sido disparado, pois quem mudou (Change) foi a célula C3 da Plan1 e não da Plan2. Nesse caso, se você não quiser usar o código no módulo da Plan1, tem que usar no módulo da pasta de trabalho inteira (EstaPasta_de_trabalho) para ele poder detectar mudanças. O efeito colateral é que o código vai rodar sempre que alguma célula em qualquer planilha for alterada, podendo causar lentidão: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Sh.CodeName = "Plan1" Then 'ou If Sh.Name = "Plan1", se Plan1 não mudar de nome If Not Intersect(Target, Sh.Range("C3")) Is Nothing Then On Error Resume Next Plan2.Name = Sh.Range("C3").Value 'ou Worksheets(2).Name = Sh.Range("C3").Value On Error GoTo 0 End If End If End Sub
  22. Nesse caso no módulo da Planilha 1 use o CodeName da Plan2 e não o seu nome real, já que este vai mudando a toda hora. Ou use seu índice: Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Range("C3")) Is Nothing Then On Error Resume Next Plan2.Name = Me.Range("C3").Value 'ou: 'Worksheets(2).Name = Me.Range("C3").Value On Error GoTo 0 End If End Sub DúvidaDavidDatal.zip
  23. São internos do VBA sim. Veja: Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Quando você insere o código para detectar mudanças em qualquer célula de qualquer planilha usando a armadilha de evento Workbook SheetChange no módulo EstaPasta_de_Trabalho, o Excel te dá a oportunidade de identificar em qual Sheet (Sh) a mudança ocorreu e também qual foi o range (Target) em que isso ocorreu. Não foram variáveis inseridas pelo usuário, são automáticas desse evento mesmo. Já a palavra reservada Me refere-se à classe em que está o código. Se está no módulo EstaPasta_de_Trabalho, Me é um objeto Workbook representando a própria pasta de trabalho. Se está num módulo de planilha, Me é um objeto Worksheet, Se dentro de um Userform, Me é o Userform. Digamos que é uma forma de "referir-se a si próprio". Então, Sh é um argumento criado para esse e outros eventos no Excel, enquanto Me está presente também no VBA de outros aplicativos. Worksheets("OutraPlanilha").Range("C3") ______ David, se me permite, acho que você deveria descrever bem detalhadamente tudo o que você deseja fazer, toda a situação, senão ficaremos longo período nessa tentativa-e-erro. Seu problema parece ser simples de resolver, mas ainda está confuso para mim, não está suficientemente claro.
  24. Uma alternativa é usar a bem útil ferramenta Câmera no Excel (originalmente oculta): Se a ferramenta Câmera já estiver disponível na sua barra de ferramentas do Excel: No Excel, selecione sua tabela; Clique na Câmera; Clique em qualquer célula vazia. O Excel gera uma imagem vinculada e atualizável de sua tabela; Recorte essa imagem e cole no Word; Se a ferramenta Câmera não estiver disponível na sua barra de ferramentas do Excel: No Excel, selecione sua tabela e copie para a área de transferência; Clique em qualquer célula vazia; Na guia Início > grupo Área de Transferência, clique na setinha da ferramenta Colar, expanda Como Imagem e escolha Colar Vínculo da Imagem. O Excel gera uma imagem vinculada e atualizável de sua tabela; Recorte essa imagem e cole no Word. No Word, clique com o botão direito sobre a imagem da tabela e clique na ferramenta Quebra Automática de Texto e selecione Através para poder mover a tabela para qualquer lugar Novamente botão direito sobre a imagem e selecione Tamanho. Defina a largura para, digamos, 18cm e mantenha ativada a opção Fixar taxa de proporção no item Escala.
  25. @Wilson Brochado , seja bem vindo! Tenha em seu documento pelo menos duas páginas já, mesmo que em branco e mantenha-se na página 1 (ou outra ímpar qualquer); Na guia Inserir > Cabeçalho > Editar Cabeçalho > Ferramentas de Cabeçalho e Rodapé (Design), ative Diferentes em Páginas Pares e Ímpares; Insira o que desejar no Cabeçalho da página 1 e que irá se disseminar por todas as ímpares; Clique em Próxima Seção ou clique no Cabeçalho da página 2 e insira o texto para as páginas pares; Agora vá para o Rodapé da página 1 e insira o que irá se repetir por todas as páginas, independente se for par ou ímpar. O pulo do gato é copiar o que você inseriu nesse rodapé da página 1 e colar no rodapé da página 2 Dica: para inserir o número da página atual digite ALT+SHIFT+P.

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!