Ir ao conteúdo
  • Cadastre-se

Midori

Membro Pleno
  • Posts

    3.526
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. @Jeff_Sandes Você pode referenciar Beep com esta declaração, Declare PtrSafe Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long Aí é só chamar a função no procedimento com os argumentos da frequência e duração.
  2. @ignite137 Pegue as medidas e calcule as áreas dos lados, p.ex, A parte amarela: x * z. E como são dois lados com essa área, multiplique por 2. Faça o mesmo para as outras. Com a área poderá calcular a quantidade necessária de rolos e os litros e depois a quantidade de latas.
  3. A fórmula está correta. O erro acontece porque seu Excel é em português. Na configuração pt-br os argumentos são separados por ponto e vírgula e as funções são traduzidas assim, =SE(NÚM.CARACT(B1)=10; ESQUERDA(B1;2) & "9" & DIREITA(B1;8); B1)
  4. Uma alternativa é fazer um loop infinito com break no caso da entrada válida, while(1){ printf("Quantos clientes deseja cadastrar? "); if(scanf("%d", &n)){ break; } while(getchar() != '\n'); }
  5. Depois de adicionar os anos é só fazer a atribuição no Initialize: cb_Procurar.Value = 2024
  6. Se o range atribuído for maior que a tabela, não vai funcionar. Então por exemplo no código coloquei B5:N204, supondo que a tabela tenha dados até a linha 100 ela seria menor que o range atribuído. No caso da fonte, deve ser questão de formatação. Para manter a configuração aplique ClearContents no lugar de Clear.
  7. A melhoria pode ser na questão da velocidade fazendo como comentei, p.ex, Sub ExcUlt180dias() Dim Area As Range Dim Coluna As Range Dim Linha As Long Dim Conta As Long Set Area = [B5:N204] Set Coluna = Area.Columns(8) Conta = WorksheetFunction.CountIf(Coluna, "<=180") If Conta > 0 Then Linha = Coluna.Rows.Count - Conta Call Area.Sort(Coluna, xlDescending) Call Area.Rows(Linha + 1).Resize(Conta).Clear Call MsgBox(Conta & " registros excluídos", vbInformation) End If End Sub
  8. Para deixar o processo mais rápido é melhor ordenar a tabela com base na coluna I e depois identificar onde começa a linha no critério para apagar tudo de uma vez.
  9. É quase isso, só faltou atribuir o valor. Assim seu código está testando uma variável com o valor sempre zero já que no VBA esse é o padrão para as numéricas. Declare Valor, sugiro Long, e faça a atribuição antes do If, assim: Valor = Area(Linha).Value. De qualquer forma não devia acontecer erro. Mostre a mensagem que aparece caso continue.
  10. Este tópico deve ajudar, Aplique o mesmo método no loop. O critério será If Valor >= 0 And Valor <= 180. https://www.clubedohardware.com.br/forums/topic/1563307-código-vba-excel-excluir-varias-linhas-baseadas-se-uma-certa-palavra-existe
  11. Um dos motivos desse erro é quando a aba não existe. Verifique se o nome é Geral mesmo.
  12. Uma alternativa para a questão das listagens é usar RowSorce no lugar de Add, mas para isso teria que trocar o ListView por ListBox já que o View não tem essa propriedade.
  13. With ListView1 .Gridlines = True .View = lvwReport .FullRowSelect = True .MultiSelect = True .ColumnHeaders.Clear .ColumnHeaders.Add Text:="ID", Width:=35, Alignment:=0 .ColumnHeaders.Add Text:="Cliente", Width:=220, Alignment:=0 'Alinh. Esquerda ...
  14. Assim não vai funcionar porque Clear é o procedimento e não a classe. O VBA mostra os membros de uma classe assim, Se digitar o ponto depois de Clear o VBA não tem como listar algo. Então é simples, basta chamar Clear uma única vez.
  15. Para uso doméstico e pagamento único a microsoft.com também oferece a licença do office home & student 2021.
  16. ColumnHeaders é uma classe. Quando você adicionou as colunas, chamou Add que é membro dela assim como Clear também é. No caso de Add você passou argumentos, mas Clear não tem nenhum. Então é só fazer a chamada de Clear antes de Add.
  17. Devia funcionar mesmo com a planilha oculta. Talvez o problema seja nas variáveis. Verifique se os valores das linhas são válidos.
  18. Para não duplicar chame o procedimento Clear, membro de ColumnHeaders.
  19. No seu procedimento Carregar_Dados você pode colocar um parâmetro para escolher isso, p.ex, Enum dtStatus dtTodos dtON dtOFF End Enum Sub Carregar_Dados(Optional Status As dtStatus = dtTodos) Dim Carrega As Boolean On Error GoTo Erro ... With ListView1 Carrega = True If Status = dtON And Plan1.Cells(Linha, 14).Value <> "ON" Then Carrega = False ElseIf Status = dtOFF And Plan1.Cells(Linha, 14).Value <> "OFF" Then Carrega = False End If If Carrega = True Then Set Lista = ListView1.ListItems.Add(Text:=Plan1.Cells(Linha, 2).Value) 'Cód. "B" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 3).Value 'Cliente "C" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 4).Value 'Contato "D" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 5).Value 'Fixo/Celular "E" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 6).Value 'WhatsApp "F" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 7).Value 'Cidade "G" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 8).Value 'Bairro "H" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 9).Value 'HáDias "I" 'Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 6).Text 'Col. com formatação R$ - Valor "G" 'Lista.ListSubItems.Add Text:=VBA.Format(Plan1.Cells(Linha, 7).Value, "Currency") 'Col. sem formatação R$ - Valor "G" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 10).Text 'Cont.Dia "J" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 11).Value 'Observações "K" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 12).Text 'OnlineDia "L" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 13).Text 'ComprDia "M" Lista.ListSubItems.Add Text:=Plan1.Cells(Linha, 14).Text 'StatusZap "N" End If ... E no Combo, Private Sub cbStatusZAP_Change() If cbStatusZAP.Value = "ON" Then Call Carregar_Dados(dtON) Else Call Carregar_Dados(dtOFF) End If End Sub
  20. Veja se assim resolve, Sub CopiaArquivos() Dim Dialogo As FileDialog Dim Area As Range Dim Nome As Range Dim TermoNE As Range Dim DirOrig As String Dim DirDest As String Dim Arquivo As String Set Area = [A2:A30] Set TermoNE = [E2] Set Dialogo = Application.FileDialog(msoFileDialogFolderPicker) Dialogo.Title = "Origem" Dialogo.Show If Dialogo.SelectedItems.Count = 1 Then DirOrig = Dialogo.SelectedItems(1) Dialogo.Title = "Destino" Dialogo.Show If Dialogo.SelectedItems.Count = 1 Then DirDest = Dialogo.SelectedItems(1) If DirOrig <> "" And DirDest <> "" Then For Each Nome In Area Arquivo = DirOrig & "\" & Trim(Nome.Value) & ".pdf" If Dir(Arquivo) <> "" Then Call FileCopy(Arquivo, DirDest & "\" & Trim(Nome.Value) & ".pdf") Else TermoNE.Value = Nome.Value Set TermoNE = TermoNE(2) End If Next Nome Else MsgBox "Diretório(s) inválido(s)", vbExclamation End If End Sub
  21. Você pode fazer só um loop na tabela e usar a função Dir para testar se o arquivo existe, é bem mais simples. Array é desnecessário. Não precisa de FSO e Shell para isso. O VBA tem FileCopy e, para pegar o diretório, FileDialog.
  22. O nome dos arquivos são esses da coluna A, 48083823.pdf, 4808382.pdf...?
  23. O tamanho deve ficar pelo menos 250MB maior que o anterior. O seu parece suficiente.
  24. @lucaslabam Em quanto estava a sua partição de recuperação? E depois do procedimento que tamanho ficou?

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