Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Uma forma simples é declarar um vetor representando as letras do alfabeto parar receber a quantidade de cada letra na frase, char letras[26] = {0}; O incremento para cada posição de acordo com a letra, char L = tolower(frase[i]); if(isalpha(L)){ letras[L - 'a'] += 1; } E para mostrar a quantidade das vogais, printf( "%d vogal(is) a\n" "%d vogal(is) e\n", letras['a' - 'a'], letras['e' - 'a'], ...
  2. @PataDGatinho Se já tem o array com os dados só tem que extrair as informações. Com um loop você pode pegar cada elemento e testar as idades.
  3. Você pode concatenar os parênteses e o valor com o retorno da função, p.ex, Dim Valor As Double Valor = 1000000 MsgBox "(" & Valor & " - " & Extenso_Valor(Valor) & ")"
  4. Sua função pode ter um loop com o teste das posições de cada letra do crib com a mensagem. O index pode ser usado para o deslocamento da posição da letra na mensagem cifrada (i + index). O valor inteiro é a quantidade de retornos verdadeiros da função.
  5. Reparei agora que nessa parte você está comparando ReadyState com uma string quando devia ser um inteiro de valor 4. Veja se corrigindo isso resolve, https://docs.microsoft.com/en-us/previous-versions/bb268229(v=vs.85)
  6. @Nilton Cézar Essas configurações continuam as mesmas na nova linha.
  7. @Nilton Cézar Para evitar a mensagem de erro quando a seleção está fora da tabela, Sub CopiaLinhaAtiva() With [TabelaRelatório].ListObject If Not Intersect(ActiveCell, .DataBodyRange) Is Nothing Then Dim Linha As Long Linha = ActiveCell.Row - .DataBodyRange.Row + 2 .ListRows.Add Linha .ListRows(Linha - 1).Range.Copy .ListRows(Linha).Range.PasteSpecial Application.CutCopyMode = False End If End With End Sub
  8. @Gabriel Gallonetti Só com a imagem não dá para saber exatamente o formato dessa célula. É só "Filial" ou "Filial: TRANSPORTES LTDA-ES"? Isso faz diferença porque se for o segundo caso o código não deve procurar o texto exato, mas a posição dele na célula (isso pode ser feito com a função InStr). E a macro está procurando na coluna A e parece que deve ser na B.
  9. @Gabriel Gallonetti Então na coluna da sua planilha não tem os texto que a macro procurar que são Filial e Financeira (e não Financéira com acento).
  10. @Nilton Cézar Veja se assim resolve, Sub CopiaLinhaAtiva() Dim Linha As Long With [TabelaRelatório].ListObject Linha = ActiveCell.Row - .DataBodyRange.Row + 2 .ListRows.Add Linha .ListRows(Linha - 1).Range.Copy .ListRows(Linha).Range.PasteSpecial End With Application.CutCopyMode = False End Sub
  11. @Hbergon Com esses valores aqui não deu nenhum erro.
  12. @Gabriel Gallonetti Não foi como? Deu algum erro? Dê mais detalhes. O código vai excluir todas as linhas do range A1:A1000 com o texto Filial ou Financeira.
  13. Acho que seu programa poderia ter duas funções, uma para testar se a placa é válida e outra para verificar se é repetida. Assim em main vai ter o loop com a entrada e o teste com as funções, algo assim, #include <stdio.h> #include <string.h> #include <ctype.h> #define MAX 5 int valida(char *placa){ if(strlen(placa) != 7){ return 0; } for(int i = 0; placa[i] != 0; i += 1){ if(i <= 2){ if(!isalpha(placa[i])){ return 0; } }else{ if(!isdigit(placa[i])){ return 0; } } } return 1; } int repetido(char placas[MAX][8], char *placa, int n){ for(int i = 0; i < n; i += 1){ if(strcmp(placas[i], placa) == 0){ return 1; } } return 0; } int main(void){ char placa[MAX][8]; int i = 0; while(i < MAX){ printf("Placa %d = ", i); scanf("%7s", placa[i]); if(valida(placa[i]) == 0 || repetido(placa, placa[i], i)){ puts("PLACA INVALIDA OU REPETIDA"); continue; } i += 1; } return 0; }
  14. @Hbergon Se anexar o arquivo vai ficar mais fácil ajudar, deve ser no conteúdo da coluna A onde sua macro busca os valores (Valor = Cells(Linha, "A")), talvez seja algum valor inválido e assim a página não carrega o endereço (se deixar Visible = True deve ver isso). Ou pode ser algum índice inválido, tente verificar o tamanho antes, p.ex: getElementsByClassName("character__job__level").Length Se possível anexe um arquivo com o conteúdo da coluna A e informe em que parte e com qual Valor acontece o erro.
  15. Pode ser como Integer e nesse caso não existe propriedade para essa variável como fez em Inicio.Value. Só faltou concatenar Inicio com o outro Range assim, Range("A" & Inicio & ":B" & Final).Copy Mas antes de tentar copiar você tem que verificar se as variáveis Inicio e Final receberam os valores das linhas. Se rodar o código sem testar essas variáveis vai dar erro já na primeira iteração que não vai ter atribuído esses valores. Uma forma de controlar isso pode ser assim onde o comando de cópia só acontece quando FIM é encontrado e se Inicio for diferente de zero, Sub Macro() Dim Counter As Integer Dim Inicio As Integer Dim Final As Integer For Counter = 1 To 200 Dim curCell As Range Set curCell = Worksheets("ORÇAMENTO").Cells(Counter, 1) If curCell.Value = "INICIO" Then Inicio = curCell.Row ElseIf curCell.Value = "FIM" Then Final = curCell.Row If Inicio <> 0 Then Range("A" & Inicio & ":B" & Final).Copy Worksheets("CONTRATO").Range("A16").PasteSpecial End If Inicio = 0 End If Next Counter End Sub
  16. @Neodenn Como declarou as variáveis Inico e Final? Quando tenta usar a propriedade Value sugere que seja um Range, mas na parte que tenta copiar é como se fosse um inteiro. No VBA o que está entre em aspas é uma string/texto. Então nessa parte você não está passando um range válido, mas um texto (incluindo "Inicio" e "Final"). Se quiser passar o valor de uma variável terá que concatenar com o operador &.
  17. O correto seria usar cell.Row para pegar a linha de cell e não Rows (com s) que retorna um objeto range. Para listar as linhas e procurar as palavras pode ser só com um loop. Veja se assim resolve, Sub ExcluiLinha() Dim Area As Range Dim Linha As Long Set Area = [A1:A1000] For Linha = Area.Rows.Count To 1 Step -1 If Area(Linha) = "Filial" _ Or Area(Linha) = "Financeira" Then Area(Linha).EntireRow.Delete End If Next Linha End Sub
  18. @Neodenn Veja se assim resolve, a macro vai procurar o texto AQUI e aplicar o SOMASE na célula, Sub TotalOrcamento() Dim Celula As Range Set Celula = [E:F].Find( _ What:="AQUI", LookAt:=xlWhole, LookIn:=xlValues) If Not Celula Is Nothing Then Celula = WorksheetFunction.SumIf( _ [D:D], "VALOR TOTAL DO ITEM:", [F:F]) End If End Sub
  19. @Neodenn Essa soma pode ser feita com a fórmula SOMASE.
  20. Testei com a mesma fórmula no seu último anexo e não retornou nenhuma informação. Veja se na sua planilha essas células estão realmente em branco (procv retorna #N/D para valor em branco/vazio), ou se esses pedidos não existem mesmo na planilha Tabela.
  21. @Natalia Benassi Pode mostrar um exemplo disso na sua planilha? De como está sem essa correção e como deve ficar.
  22. @Neodenn Veja se assim resolve, Sub SomaResultado() Dim Celula As Range Dim Resultado As Range Set Celula = [F100] While Celula.Row > 1 If UCase(Celula) = "RESULTADO" Then Set Resultado = Celula ElseIf UCase(Celula) = "PARE" Then If Not Resultado Is Nothing Then Resultado = WorksheetFunction _ .Sum(Range(Celula, Resultado)) End If Set Resultado = Nothing End If Set Celula = Celula.Offset(-1) Wend End Sub
  23. @Neodenn O código pode testar apenas se o texto é Pare ou Resultado para pegar o intervalo que será somado. Veja se assim resolve. Coloquei para começar da linha 20 e mostrar um Msgbox com o total para testar o resultado. Se for isso mesmo é só mudar inicial da linha. Sub Macro() Dim Linha As Long Dim Total As Currency Dim Somar As Boolean For Linha = 20 To 1 Step -1 Dim Valor As Variant Valor = Cells(Linha, [F:F].Column) If UCase(Valor) = "RESULTADO" Then Somar = True ElseIf UCase(Valor) = "PARE" Then Somar = False MsgBox Total Total = 0 End If If Somar = True And IsNumeric(Valor) Then Total = Total + Valor End If Next Linha End Sub Outra forma que talvez funcione seria apenas zerar a variável da soma quando o texto Pare for encontrado. Aí não teria necessidade da variável Boolean.
  24. @Natalia Benassi Salve a planilha com a extensão xlsm, feche e habilite as macros quando abrir (o Excel vai dar a opção de habilitar).
  25. @Natalia Benassi Agora é só executar a Sub TabelaPedidos. Pode ser digitando F5 ou no botão Executar do editor.

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!