Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. @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?
  2. @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; } }
  3. @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.
  4. 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;"")
  5. @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.
  6. @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.
  7. O que quis dizer com "resultado da C2"? Não entendi seu exemplo do último comentário. Se possível mostre como a planilha fica antes do resultado. E depois um exemplo de como deve ficar.
  8. @Tentar Os dados são as datas e o resultado é da fórmula que postei?
  9. Se entendi o que quer fazer, cole a fórmula em B2 e arraste para as outras. =SE(E(A2>=DATA.VALOR("01/04/2023");A2<=DATA.VALOR("31/12/2023"));A2;"") Obs: No caso de A20 não retornou nada porque tem um espaço na célula (ou está no formato texto). Para deixar no formato correto você editar manualmente ou acrescentar a fórmula VALOR na outra para deixar automático se tiver mais casos assim.
  10. @Martti Não seria melhor fazer esse relatório no Word? Assim a planilha só seria a base com os dados a serem apresentados no documento (Correspondências > Selecionar Destinatários).
  11. @Revolucao A tabela do word suporta fórmulas, mas é um recurso limitado se comparado ao excel. Outra alternativa é com uma planilha em Inserir > Planilha do Excel. Talvez assim fica mais fácil formatar o documento e configurar a apresentação das informações.
  12. @paulocezarpicos Deixei a seleção da coluna I no botão, veja se assim resolve, Private Sub BTNOK_Click() Dim Acumulado As Range Dim Leitura As Range Set Acumulado = [Z8] If Acumulado.Value <> "" Then Set Acumulado = Acumulado(0).End(xlDown)(2) End If Acumulado.Value = TXTleitura.Value Acumulado(, 3).Value = TXTdata.Value Set Leitura = [I6] If Leitura.Value <> "" Then Set Leitura = Leitura(0).End(xlDown)(2) End If Leitura.Select End Sub
  13. @rieidi_gamer Você pode consultar a documentação, lá encontrará os métodos necessários e exemplos para adaptar no seu código, https://learn.microsoft.com/en-us/dotnet/api/system.io?view=net-7.0
  14. @Luc Rosenhaim Seu código devia funcionar. Antes de rodar veja se não tem nada pendente no MS Outlook e se sincronizou e baixou todas as mensagens. Ou se sua conta de e-mail está configurada corretamente.
  15. Se possível anexe a planilha com o formulário. Pode ser com dados fictícios.
  16. Se possível anexe a planilha onde seja possível efetuar testes. Pode ser com dados fictícios.
  17. @Srt2 Para isso tem a fórmula CONT.SES que pode receber mais de um critério, p.ex, =CONT.SES(A1:T1;">10";A1:T1;"<20")
  18. @Elton Johanne Isso pode ser feito com Power Query ou VBA. Tenta a primeira forma que é mais simples, é só selecionar o diretório com os arquivos e configurar: Dados > Obter Dados > De Arquivo > Da Pasta.
  19. Não tem nenhum erro e está como pedido no enunciado. Para as entradas coloque a idade primeiro para sair sem ter que entrar com todas as informações antes, p.ex, Enquanto Idade <> -1 Faca Escreval("Informe a sua idade ou digite -1 para encerrar") Leia(Idade) Se(Idade > -1) então ... FimSe FimEnquanto Assim só vai pedir as outras se a idade for maior que -1.
  20. @Eli Almeidaa Na fase de testes do código em vez de fazer um programa interativo, atribua entradas aleatórias ou predefinidas. Assim não terá que ficar digitando cada valor toda vez que rodar o programa. Aí p.ex vai mostrar as notas, matrículas e conceitos de 75 alunos, Algoritmo "Notas" Var Conceito: caractere Nota: Real Aluno: Inteiro Matricula: Inteiro Inicio Para Aluno <- 1 Ate 75 Faca Matricula <- 1000 + Aluno Nota <- Randi(11) Se(Nota <= 4.9) então Conceito <- "D" SeNao Se(Nota <= 6.9) então Conceito <- "C" SeNao Se(Nota <= 8.9) então Conceito <- "B" SeNao Conceito <- "A" FimSe FimSe FimSe Escreval(Aluno:2," | ",Matricula," | ",Conceito," | ",Nota:2) FimPara FimAlgoritmo
  21. @Luciana Mittmann Petry Cole em BT3 e arraste para as outras, =SEERRO(SOMARPRODUTO($C3:$BP3;DESLOC($A$40;CORRESP(BT$2;$A$40:$A$100;0)-1;2;;COLS($C:$BP)));0) O range da data é A40:A100, caso tenha mais é só aumentar. Só depois que fiz a fórmula percebi que tinha data repetida nesse range como acontece com 06/04 e 07/04, então se puder somar e deixar numa linha vai facilitar ou terá que ser com outra fórmula.
  22. Outra forma só com o critério da própria estrutura para encerrar como comentei pode ser assim, Algoritmo "Conta Par e Impar" Var PConta: Inteiro TConta: Inteiro PSoma: Inteiro TSoma: Inteiro Num: Inteiro Inicio Repita Leia(Num) Se(Num > 0) então Se(Num Mod 2 = 0) então PSoma <- PSoma + Num PConta <- PConta + 1 FimSe TSoma <- TSoma + Num TConta <- TConta + 1 FimSe Ate Num = 0 Escreval("Pares = ", PConta) Escreval("Impares = ", TConta - PConta) Se(PConta <> 0) então Escreval("Media Pares = ", PSoma/PConta) FimSe Se(TConta <> 0) então Escreval("Media Total = ", TSoma/TConta) FimSe FimAlgoritmo
  23. @Eli Almeidaa O primeiro passo para encerrar o programa é sair do loop. Já deve ter percebido que essas estruturas de repetição tem uma parte lá para especificar uma condição. É aí que você vai colocar o que diz no enunciado para sair do loop e terminar o programa. No seu último código tem essa estrutura, Enquanto Num > 0 Faca ... FimEnquanto Assim vai ficar em loop enquanto a condição Num > 0 for verdadeira (ou até ser falsa). Então é só usar a mesma lógica para qualquer outra condição.
  24. @Cairo Alberto Assim está guardando os valores nos endereços da memória (0xA, 0xB e 0xC) e não nos registradores como diz o enunciado. Essa arquitetura tem 1024 palavras de memória, onde seus dados são armazenados com WORD naquelas posições. E tem os registradores na Unidade de Controle e na ULA com AC e MQ para operações lógicas e aritméticas.
  25. Mod é o operador que você pode usar para pegar o resto da divisão. Já viu isso aqui no tópico no exercício da divisão por 11 com resto 5. A diferença é que agora tem que ser o resto da divisão por 2. Se for zero é par. No enunciado diz que é para mostrar a média e a quantidade de pares e ímpares. Para isso é só fazer a condição com Mod e incrementar as variáveis do par ou ímpar.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!