Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Nessa planilha selecione a célula B2, copie e depois selecione a tabela toda e cole. Assim vai travar o range de Column1 (a coluna do nome). Fiz isso aqui e ficou com todas as parcelas como no print que mostrei.
  2. @PBTL Então você fez algo errado... Veja como deve ficar,
  3. @PBTL Veja se assim resolve. Cole na célula B2 e arraste, =SEERRO(SE(E(B$1>=PROCV([@Column1];Table_1;4;0);B$1<DATAM(PROCV([@Column1];Table_1;4;0);PROCV([@Column1];Table_1;3;0)));PROCV([@Column1];Table_1;2;0)/PROCV([@Column1];Table_1;3;0);"");"")
  4. Qual é o texto da célula e a mensagem de erro? Talvez o texto da célula não seja válido para um nome de arquivo, como o formato de data por exemplo.
  5. @Scofieldgyn Com loop fica assim, Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 Then If Not Application.Intersect(Target, [O:O]) Is Nothing Then Call AtualizaComentario( _ Target.Offset(0, -12), _ Target.Offset(0, -13), _ Target.Offset(0, -10), _ Target) End If End If End Sub Sub AtualizaComentario( _ ByVal Codigo As String, _ ByVal Unidade As String, _ ByVal Data As Date, _ Comentario As Range _ ) Dim Celula As Range Dim Cadastrado As Boolean Set Celula = ThisWorkbook.Sheets("Comentários").[A3] Do While Celula <> "" If Celula.Value = Unidade _ And Celula(1, 2).Value = Codigo _ And Celula(1, 4).Value = Data Then Cadastrado = True Celula(1, 14).Value = Comentario.Value Exit Do End If Set Celula = Celula(2) Loop If Not Cadastrado Then Celula.Resize(1, 14).Value = _ Comentario.Offset(0, -13).Resize(1, 14).Value End If End Sub
  6. @Scofieldgyn Nesse caso a macro pode tentar filtrar os dados na planilha Comentários. Aí o critério pode ser o código, data e unidade para atualizar caso encontre algum resultado. Outra alternativa mais lenta é com um loop que pode verificar cada linha da tabela até encontrar os três resultados.
  7. @Scofieldgyn Se o código é único a macro pode procurar na planilha Comentário se já foi acrescentado. Veja se assim resolve, Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count = 1 Then If Not Application.Intersect(Target, [O:O]) Is Nothing Then Call AtualizaComentario(Target.Offset(0, -12), Target) End If End If End Sub Sub AtualizaComentario(Codigo As Range, ByVal Comentario As String) Dim PlanCom As Worksheet Dim PlanDin As Worksheet Dim BuscaLinha As Range Set PlanCom = ThisWorkbook.Sheets("Comentários") Set PlanDin = ThisWorkbook.Sheets("Tabela Dinâmica") Set BuscaLinha = PlanCom.[B:B].Find( _ What:=Codigo.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not BuscaLinha Is Nothing Then BuscaLinha(1, 13) = Comentario Else Set BuscaLinha = PlanCom.[A1].Offset( _ [A:A].Rows.Count - 1).End(xlUp).Offset(1) BuscaLinha.Resize(1, 14).Value = _ Codigo.Offset(0, -1).Resize(1, 14).Value End If End Sub
  8. @Scofieldgyn Já tentou aplicar a macro no evento Change? Assim é só copiar os dados da linha para a última da outra planilha.
  9. Aqui a macro do @Basole funcionou. Verifique se as macros estão mesmo habilitadas... Faça uma sub com uma Msgbox só para testar.
  10. Atribua o diretório com o valor da célula, se for A1 p.ex, saveLocation = "C:\Users\Desktop\" & [A1].Value
  11. Sobre a portabilidade, se o código faz uso só das bibliotecas do padrão ANSI C vai compilar em qualquer um com essa especificação.
  12. O código terá duas variáveis para guardar os números, uma com o atual e outra com o anterior. Mas pode acontecer das duas guardarem o mesmo valor já no primeiro ciclo e encerrar o loop na primeira entrada. Para evitar isso pode ser feito um teste para apontar o momento de saida do loop apenas após a segunda entrada, p.ex, int continua = 1; int inicio = 1; int num = 0; int anterior = 0; while(continua){ scanf("%d", &num); if(inicio == 0 && anterior == num){ continua = 0; } anterior = num; inicio = 0; } Sem a condição o loop termina na primeira entrada caso seja zero.
  13. @onerdimprestavel Em vez de atribuir cada posição do vetor você pode iniciar como qualquer string, char i[10] = "AEIOUaeiou"; Para contar as vogais, se quiser usar uma função nativa, tem a strchr, const char * strchr ( const char * str, int character ); Aí é só passar a string das vogais para o primeiro parâmetro e a letra do texto para o segundo, p.ex, if(strchr("AEIOUaeiou", texto[i]) != NULL){ conta += 1; }
  14. @sthefanes245 Para pegar os dados dos 12 jogadores o contador do seu loop inicia com 1 até a condição de parada. Durante o ciclo tem o incremento j++ que ao chegar a 13 a condição j <= 12 se torna falsa e portanto o loop termina. É por isso que deve tirar 1 da variável no cálculo já que vai ler 12, mas quando o loop termina o valor é 13. Para não ter que tirar nada o seu loop poderia ser: for(j = 0; j < 12; j++) Assim vai rodar 12 vezes e a variável fica com o valor 12.
  15. Você iniciou a variável jovem com zero, então jovem > idade sempre seria falso. O teste j == 1 é só para atribuir a idade no primeiro ciclo do for e garantir que a variável jovem receberá a primeira entrada. Mas se o seu código chamasse scanf duas vezes bastaria o teste sem o contador, p.ex, scanf("%d", &idade); jovem = idade; for(j = 1; j <= 12; j += 1){ scanf("%d", &idade); if(jovem > idade) jovem = idade; Isso você vai perceber ao imprimir a variável i depois do loop, printf("Valor de i = %d\n", i);
  16. @FudoYusei Tente seguir da forma mais simples e lógica que é como fez no primeiro código. Assim os testes da idade pode ser com o mesmo operador: menor ou igual. Não vejo sentido tentar da outra forma.
  17. Porque a condição idade <= 19 é verdadeira para qualquer valor menor que 20, então a condicional termina aí quando é satisfeita. Seria diferente do menor para o maior como fez na outra estrutura condicional, já que para chegar na idade <= 19 antes teria que testar 9 e 14 nessa ordem.
  18. Colunas individuais é como comentei (botão direito dentro da tabela) já que ficam bloqueadas quando tem mais de uma tabela na mesma coluna.
  19. @Paulo Edson Isso acontece porque sua tabela já tem outra coluna com o mesmo nome. Para apagar clique com o botão direito e selecione Excluir.
  20. @DANIEL DE ALMEIDA MAIA Verifique se o nome do diretório está certo, parece haver problema com o acento em Funcionários. E LoadPicture não aceita todos os formatos de imagem, tente carregar no formato 24-bit bitmap.
  21. Pode ser assim também, mas se a entrada não for uma data válida vai dar erro de execução.
  22. @Jeff_Sandes Para a variável do tipo Date aplique a função Day. Aí é só renomear ActiveSheet.
  23. Tenta desta forma, "=((@PIArcVal(""\\FTHSERVER\ACS_540SE01M1.V"",""" & Data & " " & Horas & """,0,"""",""auto"")/0.8333)*0.05617978)"
  24. @Jeff_Sandes Veja se assim resolve, Sub Atualiza() Call RegistraEvento([C3:Z62], [AB2]) End Sub Sub RegistraEvento(Tabela As Range, Registro As Range) Dim Evento As Range Dim Inicio As String Dim Fim As String Dim Anterior As String Dim Coluna As Integer Dim Linha As Long For Coluna = 1 To Tabela.Columns.Count Linha = 0 For Each Evento In Range(Tabela.Columns(Coluna).Address) Linha = Linha + 1 If Evento.Value <> Anterior Then If Evento.Value = "Inactive" Then Inicio = Tabela(0, Coluna) & ":" & Tabela(Linha, 0) Else If Inicio <> "" Then Fim = Tabela(0, Coluna) & ":" & Tabela(Linha, 0) End If End If End If If Inicio <> "" And Fim <> "" Then Registro(1, 1).Value = Inicio Registro(1, 2).Value = Fim Set Registro = Registro(2) Fim = "" End If Anterior = Evento.Value Next Evento Next Coluna End Sub
  25. @Jeff_Sandes Como essas informações devem ser apresentadas? Na planilha tem vários casos e horários, é para localizar todos e mostrar uma lista?

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!