Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Posts

    3.577
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. @João L. Dattoli A condicional dessa forma, como fez na função print, é um inline if ou operador ternário, p.ex, x = True y = 1 if x else 2 Assim o valor de y será 1 se x for True, caso contrário o valor atribuiído será 2. Nesse caso y = 1 já que x é True. No seu código a variável locdown recebe True já que está negando False. E o primeiro print mostra "uhuuuuuu" porque locdow é True mas grana não é menor ou igual a 40. O teste lógico and só é verdadeiro quando as duas condições são verdadeiras. O segundo print mostra "ficar em casa" já que o teste é True (locdown True or grana menor ou igual a 40). O teste or só é falso quando as duas são falsas.
  2. @Antonio Baptista Isso pode ser feito com macro. Se possível anexe as planilhas com dados fictícios.
  3. @ghg15 Com macro você pode importar tudo para uma planilha temporária e filtrar o produto.
  4. @Revolucao O controle pode ser carregado com um loop na lista de nomes da planilha, p.ex, Sub AtualizaNomes() Dim Nome As Range Set Nome = ThisWorkbook.Sheets("Cad_Cli").[C5] Call ThisWorkbook.Sheets("Rel_Cliente").ComboBox1.Clear While Nome.Value <> "" Call ThisWorkbook.Sheets("Rel_Cliente").ComboBox1.AddItem(Nome.Value) Set Nome = Nome(2) Wend End Sub
  5. @levi feirreira O erro acontece porque não existe esse objeto no seu sistema. No VBA ainda tem suporte para o IE (InternetExplorer.Application), mas para outros navegadores a alternativa é o Selenium. https://en.wikipedia.org/wiki/Selenium_(software)
  6. No menu Revisão em Gerenciar Proteção, ative a proteção e coloque a senha em Senha de proteção da planilha
  7. Dessa forma o retorno será a mesma quantidade de linhas da tabela. Se o seu Excel for o 365 você pode usar a fórmula Filtro que retorna só os dados da busca, =FILTRO(C3:C999;B3:B999<=HOJE())
  8. Se o número não for inteiro o retorno da fórmula será diferente de zero. Da mesma forma que um inteiro que não é múltiplo de 4.
  9. Com a fórmula Se o retorno pode ser matricial com base no critério da data, p.ex, =SE(B3:B15<=HOJE();C3:C15;"")
  10. @GENECIOFICIAL Na formatação aplique a fórmula Mod: =MOD(A3;4)=0
  11. Verifique o critério que usou para carregar os elementos de MatrizResultadosLinha. Apenas no caso da Capital vi que ela começa recebendo 3, por isso a primeira fica com os nomes das colunas. Esse controle não tem o recurso de ordenação. O que pode ser feito é ordenar toda a tabela antes adicionar os registros. Ou então copiar os dados para uma coluna auxiliar, ordenar e carregar a partir dela.
  12. @jessicardiax Seu código tem alguns erros e alertas, deve ter visto algo assim quando tentou compilar, main.c:9:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ main.c:17:30: warning: format ‘%i’ expects argument of type ‘int’ main.c:19:22: error: expected expression before ‘[’ Aí o compilador apontou o erro no m que ficou na frente da matriz. No loop mais interno devia incrementar j e não i. E normalmente nos contadores os testes são com o tamanho da matriz, p.ex, for(i=0; i<3; i++){ for(j=0; j<5; j++){ Não tem nada errado usar menor ou igual, mas acho mais simples e claro assim e é o mesmo valor que usou na declaração da matriz. E a declaração dos contadores pode ser no próprio for como int e não float como fez junto com as outras, p.ex, for(int i = 0; i < 3; i++){ for(int j = 0; j < 5; j++){ Seu printf está incrementando a variávei i, porém o comando for já faz isso. Isso é o mesmo que incrementar de 2 em 2. Aí faltou a variável.
  13. Midori

    C Cálculo de inss e ir

    @eric_luis Sua segunda condicional do ir está independente da anterior quando devia ser um else if. Mas os testes podem ser mais simples. Não precisa pegar o intervalo como fez em "sal >= 1247.71 && sal <= 2079.50" já que vai ir testar do menor para o maior, p.ex, double salario; double inss = 0; double ir = 0; ... if(salario <= 1247.70){ inss = salario * 0.08; }else if(salario <= 2079.50){ inss = salario * 0.09; }else if(salario <= 4159.0){ inss = salario * 0.11; }else{ inss = 468.0; } if(salario > 1710.78){ if(salario <= 2563.91){ ir = salario * 0.075 - 128.31; }else if(salario <= 3418.59){ ir = salario * 0.15 - 320.60; }else if(salario <= 4271.59){ ir = salario * 0.225 - 557.00; }else{ ir = salario * 0.275 - 790.58; } }
  14. @jcgmcs Qual conteúdo? O controle só lista os dados a partir da linha 5.
  15. @jcgmcs Faça esta correção na condição do CountIf, If .CountIf(Cells(5, Coluna).Resize(Linha - 4), Cells(Linha, Coluna)) <= 1 Then
  16. @jcgmcs O código alterado para carregar o combo da tabela do último anexo, Private Sub ComboBox1_Change() Dim Campo As Range Dim Coluna As Integer Dim Linha As Long Static Inicia As Boolean If Inicia = True Then Set Campo = [3:3] With WorksheetFunction If .CountIf(Campo, ComboBox1.Value) Then Coluna = .Match(ComboBox1.Value, Campo, 0) Call cb_Procurar.Clear For Linha = 5 To ThisWorkbook.ActiveSheet.UsedRange.Rows.Count If Cells(Linha, Coluna) <> "" Then If .CountIf(Cells(2, Coluna).Resize(Linha - 1), _ Cells(Linha, Coluna)) <= 1 Then Call cb_Procurar.AddItem(Cells(Linha, Coluna)) End If End If Next Linha End If End With End If Inicia = True End Sub
  17. @jcgmcs Com CurrentRegion toda região a partir de A3 será selecionado automaticamente. E caso tenha dados fora da tabela nas linhas ou colunas consecutivas, vão entrar no range também. Se for esse o caso, você pode alterar a atribuição da Tabela. Faça um teste colocando manualmente o range, p.ex, Set Tabela = [A3:F5573]
  18. @jcgmcs A tabela do seu anexo começa na linha 3, apenas essa linha não é considerada na lista, e a partir dela todos os dados serão testados até a última linha. Quando você testou a macro nessa planilha do anexo algum dado indevido apareceu no controle? Ou faltou algum que devia ter entrado? As linhas 1 e 2 não fazem parte do range e não vejo sentido ignorar a 4 já que o conteúdo dela faz parte da tabela. Caso esteja tentando adaptar o código em outra planilha, dê mais detalhes sobre a estrutura dela ou envie o anexo.
  19. @jcgmcs Os campos da tabela da Plan2 são diferentes das informações apresentadas na lista. Como gostaria de salvar esses dados?
  20. @jcgmcs Não listou porque o registro tem o mesmo nome da coluna. E como a coluna estava no critério das repetições acabou não entrando na lista. Coloquei mais um critério para não adicionar linha em branco. For Linha = 2 To Tabela.Rows.Count If Tabela(Linha, Coluna) <> "" Then If .CountIf(Tabela(2, Coluna).Resize(Linha - 1), Tabela(Linha, Coluna)) <= 1 Then Call cb_Procurar.AddItem(Tabela(Linha, Coluna)) End If End If Next Linha Qual lista?
  21. @Arkcanjou Você pode aplicar as relações de um triângulo retângulo para mover o objeto de acordo com a distância e ângulo que o outro se aproxima, p.ex, A distância é a hipotenusa e o cálculo: distância = √[(Ax - Bx)² + (Ay - By)²]. Se fizer uma função para isso pode usar nos catetos também, hipotenusa = distancia(Ax, Ay, Bx, By); oposto = distancia(Ax, Ay, Ax, By); adjacente = distancia(Ax, By, Bx, By); Aí é só testar a distância (você também pode somar o raio já que a distância é medida entre os centros). Supondo que queira mover o objeto quando for 10 unidades no ângulo que o outro se aproxima, você pode incrementar a posição desta forma, if (hipotenusa < 10) { if (Ax > Bx) { Bx -= adjacente / hipotenusa; }else{ Bx += adjacente / hipotenusa; } if (Ay > By) { By -= oposto / hipotenusa; }else{ By += oposto / hipotenusa; } }
  22. @jcgmcs Para ficar mais rápido o ideal era ter outras tabelas com as regiões, UF e Porte sem repetição para não ter que fazer o loop nessa. Outra forma de deixar mais rápido o carregamento é usar uma coluna auxiliar para copiar os registros e remover os duplicados (RemoveDuplicates). Private Sub ComboBox1_Change() Dim Tabela As Range Dim Coluna As Integer Dim Linha As Long Static Inicia As Boolean If Inicia = True Then Set Tabela = [A3].CurrentRegion With WorksheetFunction If .CountIf(Tabela.Rows(1), ComboBox1.Value) Then Coluna = .Match(ComboBox1.Value, Tabela.Rows(1), 0) Call cb_Procurar.Clear For Linha = 2 To Tabela.Rows.Count If .CountIf(Tabela(1, Coluna).Resize(Linha), _ Tabela(Linha, Coluna)) <= 1 Then Call cb_Procurar.AddItem(Tabela(Linha, Coluna)) End If Next Linha End If End With End If Inicia = True End Sub Obs: A variável Inicia é por causa do Initialize do formulário que está ativa o evento Change ao carregar o combo.
  23. As colunas K:R estão exatamente iguais a B:I. Se quer deixar valores nelas apenas quando tiver a data, aplique a fórmula em K9 e arrastar para as outras (K:R), =SE($J9<>"";B9;"")
  24. @jcgmcs A forma mais simples é com RowSource. No evento Change do ComboBox1 sua macro pode identificar a coluna selecionada e atribuir o range para a propriedade RowSource do outro combo. Porém assim não haverá tratamento das repetições. A outra forma é com Loop e aí poderá testar cada um para não adicionar valor repetido e se a sua versão for a 365 poderá usar a função Unique.
  25. @Endmmans Se não quer alterar a variável é só não fazer nada com ela. Somar com zero é uma operação inútil. Para dar a opção de sair da função só com a opção 2, você pode deixar esses comandos em loop e sair com break. Apenas um return é necessário.

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!