Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Para retornar o caminho ou nome a imagem sim, mas é preciso passar o caminho e fazer a atribuição com LoadPicture como você fez no Isert_Image1, p.ex, Image1.Picture = LoadPicture(ListBox1.List(ListBox1.ListIndex, 8))
  2. @isabela queiroz É só fazer a condição, If Left(Item.Value, Len("245897-")) <> "245897-" Then Item = "245897-" & Item End If
  3. @Edgar beleza Para pegar esses dados é só passar para a propriedade List a linha e coluna do controle, p.ex, Private Sub ListBox1_Click() Txt_Data.Value = ListBox1.List(ListBox1.ListIndex, 0) Txt_Nome.Value = ListBox1.List(ListBox1.ListIndex, 1) End Sub Assim quando selecionar algum item do ListBox vai retornar para Data a posição da primeira coluna e para Nome a segunda.
  4. Atribua o nome do arquivo seguindo esse padrão e antes de salvar verifique se ele já existe. Em loop você pode incrementar a variável Rev/Contador até chegar no nome de arquivo que ainda não existe, p.ex, Nome = "Codigo - Rev " & Format(Rev, "00") & " - " & Data & ".xlsm"
  5. Acho melhor assim.
  6. @Janilson Brito Com Split a macro pode pegar os campos necessários a partir da linha do arquivo. Veja se assim resolve, Sub ImportarTextosGrandes() Dim Planilha As Worksheet Dim oSistemaArquivo As Object Dim Arquivo As Object Dim Campo As Variant Dim TxtLinha As String Dim NomeArquivo As String Dim LinhaPlanilha As Long Dim LinhaArquivo As Long NomeArquivo = ThisWorkbook.Path & "\REL_APLICACOES_clube.txt" Set oSistemaArquivo = CreateObject("Scripting.FileSystemObject") Set Arquivo = oSistemaArquivo.OpenTextFile(NomeArquivo, 1, False, -2) Set Planilha = ThisWorkbook.Sheets("geral") Do While Arquivo.AtEndOfStream <> True TxtLinha = WorksheetFunction.Trim(Arquivo.ReadLine) If TxtLinha <> "" Then Campo = Split(TxtLinha, " ") If UBound(Campo) > 2 Then LinhaPlanilha = LinhaPlanilha + 1 LinhaArquivo = LinhaArquivo + 1 Planilha.Cells(LinhaPlanilha, "A").Value = _ IIf(InStr(Campo(1), "."), Split(Campo(1), ".")(0), Campo(1)) Planilha.Cells(LinhaPlanilha, "B").Value = Campo(2) & " " & Campo(3) Application.StatusBar = "Lendo linha número = " & LinhaArquivo 'Cria nova planilha quando planilha atual está cheia If LinhaPlanilha >= [A:A].Rows.Count Then Set Planilha = ThisWorkbook.Worksheets.Add LinhaPlanilha = 0 End If End If End If Loop Arquivo.Close End Sub
  7. @isabela queiroz Na prática seria um procv para retornar na coluna B o resultado da busca pelo Customer? Não entendi o que quer dizer com dicionário.
  8. Acabei encontrando outra forma melhor, com while read, onde não é necessário modificar a variável IFS (em outro sistema só funcionava atribuindo $ sem '\n'), cat file | while read line; do ... done
  9. Atribua o caminho desse diretório a variável Pasta, p.ex, Pasta = ThisWorkbook.Path & "\Arquivos descompactados"
  10. @isabela queiroz Tem com PasteSpecial em vez de colar com Copy, p.ex, Call ProcOrig.Offset(1).Resize(Conta).Copy Call ProcDest.Offset(1).PasteSpecial(xlPasteValues)
  11. @isabela queiroz Tenta fazer outro teste nessa que anexou aqui. Abra novamente essa sem edição.
  12. Testei aqui e copiou só as filtradas. Está rodando em outra planilha com mais dados ou na que anexou aqui?
  13. @isabela queiroz Para copiar todas o parâmetro Conta pode ser removido para a atribuição ficar no próprio procedimento, Sub CopiaColunas(OrigNomes As Variant, DestNomes As Variant, Linhas As Variant) Dim ProcOrig As Range Dim ProcDest As Range Dim Indice As Integer Dim Conta As Long If Linhas(0).Cells(1, 1).Offset(1) <> "" Then Conta = Linhas(0).End(xlDown).Row - 1 For Indice = 0 To UBound(OrigNomes) Set ProcOrig = Linhas(0).Find( _ What:=OrigNomes(Indice), LookIn:=xlValues, LookAt:=xlWhole) If Not ProcOrig Is Nothing Then Set ProcDest = Linhas(1).Find( _ What:=DestNomes(Indice), LookIn:=xlValues, LookAt:=xlWhole) If Not ProcDest Is Nothing Then Call ProcOrig.Offset(1).Resize(Conta).Copy(ProcDest.Offset(1)) End If End If Next Indice End If End Sub Também dá para fazer assim, mas o tipo de ul deve ser Long assim como o argumento passado para a sub. Em xlUp você acabou trocando l pelo número 1.
  14. @isabela queiroz Você pode mais arranjos para armazenar os nomes das colunas de origem , destino e as linhas onde tem os nomes das colunas. A função CopiaColunas recebe esses argumentos, junto com a quantidade de linhas que devem ser copiadas, nesse caso são 5. O nome de algumas colunas na sua planilha tem espaço no final, então remova antes de testar, Sub Macro() Call CopiaColunas( _ Array("nomes", "numero", "digito"), _ Array("Nom Pessoas", "Num. Cod", "Customer"), _ Array(Sheets("Sheet1").[1:1], Sheets("Sheet2").[2:2]), 5) End Sub Sub CopiaColunas(OrigNomes As Variant, DestNomes As Variant, Linhas As Variant, Conta As Long) Dim ProcOrig As Range Dim ProcDest As Range Dim Indice As Integer For Indice = 0 To UBound(OrigNomes) Set ProcOrig = Linhas(0).Find( _ What:=OrigNomes(Indice), LookIn:=xlValues, LookAt:=xlWhole) If Not ProcOrig Is Nothing Then Set ProcDest = Linhas(1).Find( _ What:=DestNomes(Indice), LookIn:=xlValues, LookAt:=xlWhole) If Not ProcDest Is Nothing Then Call ProcOrig.Offset(1).Resize(Conta).Copy(ProcDest.Offset(1)) End If End If Next Indice End Sub
  15. Consegui resolver modificando a variável de ambiente IFS. https://bash.cyberciti.biz/guide/$IFS No script atribuí o de nova linha e assim a saída ficou da forma correta, IFS=$'\n'
  16. @Fábio Siol Veja se assim resolve, Sub Macro() Dim Area As Range Dim Linha As Long Dim Vetor(11) As String Dim Coluna As Integer Set Area = ActiveSheet.UsedRange For Linha = Area.Rows.Count To 2 Step -1 For Coluna = 1 To UBound(Vetor) If Cells(Linha, Coluna) <> "" Then Vetor(Coluna) = Vetor(Coluna) & Cells(Linha, Coluna) & "/" End If Next Coluna If Cells(Linha, 1).Interior.ColorIndex = 15 Then For Coluna = 1 To UBound(Vetor) If Cells(Linha, Coluna) = "" Then Cells(Linha, Coluna) = Vetor(Coluna) End If Next Coluna Erase Vetor End If Next Linha End Sub
  17. Acho que para configurar e mostrar dessa forma só se houver algum controle onde seja possível colocar no formulário. Não conheço um controle assim. Mas com isso daria para configurar as propriedades e métodos por meio dos outros controles do formulário.
  18. @Fábio Siol No caso do LT-022 é assim que deve ficar? Esse tem mais de um telefone.
  19. Tenho um arquivo com as informações separadas por ponto e vírgula assim, 1;1;00:00:00;00:01:00;2023 Mitsubishi Outlander PHEV;$39,845 1;2;00:16:30;00:17:25;2023 Mitsubishi Eclipse Cross;$25,795 1;3;00:02:00;00:05:30;2023 Mitsubishi Outlander;$27,595 2;1;01:01:00;01:25:00;2023 Mitsubishi Outlander Sport;$22,995 3;1;11:35:30;11:40:10;2023 Mitsubishi Mirage G4;$17,245 Porém alguns campos tem espaço no texto e com isso não consigo atribuir o veículo. Este é o meu script, #!/bin/sh for line in $(cat file); do index=$(echo $line | cut -d ";" -f1) eps=$(echo $line | cut -d ";" -f2) vehicle=$(echo $line | cut -d ";" -f5) company=$(echo $vehicle | cut -d " " -f2) output="${company} - ${index}x${eps} - ${vehicle}.mp4" echo $output done A saída está assim, 2023 - 1x1 - 2023.mp4 Mitsubishi - MitsubishixMitsubishi - Mitsubishi.mp4 Outlander - OutlanderxOutlander - Outlander.mp4 - .mp4$39,845 2023 - 1x2 - 2023.mp4 Mitsubishi - MitsubishixMitsubishi - Mitsubishi.mp4 Eclipse - EclipsexEclipse - Eclipse.mp4 - .mp4x$25,795 Mas devia ser, Mitsubishi - 1x1 - 2023 Mitsubishi Outlander PHEV.mp4 Mitsubishi - 1x2 - 2023 Mitsubishi Eclipse Cross.mp4 Como faço para mostrar dessa forma?
  20. Midori

    C Conversão de tipos em C

    @Sterling Caso queira dividir dois inteiros p.ex, você pode fazer para o resultado também não ficar inteiro, int main(){ int a = 1; int b = 3; float c = a/b; printf("Sem: %f\n", c); c = (float)a/b; printf("Com: %f\n", c); return 0; } Também daria para fazer sem casting, com uma constante double, mas acho que não ajuda na clareza do código além de ter um cálculo a mais: c = a/1.0/b ou c = 1.0 * a/b.
  21. @Nilton Cézar Acredito que a melhor forma de salvar em PDF é com a função ExportAsFixedFormat. Mas caso queira mostrar a janela de impressão, é o usuário que terá que fechar e configurar manualmente as opções dela.
  22. @Tati Schein Faça um loop na lista, assim poderá passar cada valor de x, for valor in x: cxtp = (Cs * (1-(erf((valor) / (2 * math.sqrt(D*t)))))) print(cxtp)
  23. Perder tempo em que sentido? Parece não ser o caso agora, mas já vi algumas tags por aqui de C++ e na verdade era para C...
  24. @RamonBerft Os dados estão no arquivo, então é só ler cada linha. Para manipular arquivos e os dados deles tem as funções fopen, fprintf, fscanf, etc.
  25. @Netobarbuio Em versões anteriores do Excel dava para fazer com CommandBars/Controls, mas tentei no 365 e não deu certo. Se não encontrar uma forma de fazer isso, acho melhor usar Workbook_BeforeSave. Na condição de SaveAsUI você pode colocar um Msgbox com um aviso.

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!