Ir ao conteúdo

Midori

Membro Pleno
  • Posts

    3.601
  • Cadastrado em

  • Última visita

Tudo que Midori postou

  1. Já tentou com tabela dinâmica (Selecione a tabela, Inseir > Tabela Dinâmica)? p.ex,
  2. Agora está certo. Esse erro é porque seu MultiPage está com outro nome ou você não adicionou nenhum.
  3. A atribuição serve para armazenar um valor numa variável. Suponha que você tenha a variável A e quer armazenar nela o valor 10, esta é a sintaxe, A = 10 Isso é uma atruição e nesse caso A é o nome da variável, 10 a expressão e igual é o operador de atribuição: variável = expressão. No seu código as variáveis são lblFruta e lblConta e a expressão é a linha de código que comentei. Como nesse caso a expressão é uma referência a um objeto você deve colocar a instrução Set antes da variável. Então, a linha vermelha está errada por que você só colocou a expressão, faltou a variável com Set e o operador de atribuição. Não precisava comentar, era só substituir as expressões.
  4. @Darcio Antunes Godinho Para isso tem a fórmula SOMASE. Sugiro deixar os nomes da coluna A iguais ao da tabela para usar como critério na fórmula, aí é só escrever a fórmula em B3 e arrastar.
  5. Antes da linha SaveAs coloque Application.DisplayAlerts = False
  6. Além das atribuições você deve remover a linha do erro que aparece no print. Como não mostrou o código com a parte do erro fica difícil ajudar.
  7. O operador esperado (igual) é usado para atribuir. É o que acontece nas duas linhas acima do erro. Isso que deve ter feito, a atribuição dos labels. Então é só substituir a anterior por essa.
  8. Não é em qualquer posição, é na atribuição dos controles. Como ficou o seu código? Em que parte acontece o erro?
  9. Atribuiu isso a lblFruta e lblConta?
  10. Você pode copiar a tabela para uma planilha temporária, para ordenar e puxar os dados dela. Outra alternativa é criar uma tabela dinâmica numa aba oculta, para atualizar e deixar em ordem.
  11. Os dados são acrescentados na ordem que estão na planilha, então é só ordenar a tabela antes de abrir o formulário. No Multipage tem a propriedade Pages, o índice do primeiro é zero. Para adicionar no segundo fica assim, Me.MultiPage2.Pages(1).Controls.Add("Forms.Label.1", , True)
  12. @Esraeu Nas séries do gráfico não dá para usar funções. Se quiser modificar isso de acordo com uma condição pode ser com macro ou células auxiliares.
  13. @Swalls É possível de diversas formas. Com fórmulas terá que ser numa versão mais recente para usar a que comentei.
  14. @Fredi Moroni Se tem o Office 365 pode aplicar a fórmula ÚNICO para remover os repetidos do total.
  15. O espaçamento entre as linhas é no DIST_Y, coloque um valor negativo. Sugiro começar com -6.
  16. Com Alt+F11 abra o editor do VBA. No menu escolha Inserir > Módulo, selecione o Módulo1 (duplo clique) e cole a macro. Salve o arquivo com a extensão xlsm.
  17. Veja se assim resolve. Private Sub UserForm_Initialize() Const TOPO As Integer = 54 Const DIST_X As Integer = 10 Const DIST_Y As Integer = 0 Const W_FRUTA As Integer = 80 Const W_CONTA As Integer = 10 Dim lblFruta As Control Dim lblConta As Control Dim Fruta As Range Dim Area As Range Dim Y As Integer Dim L_Frt As Integer Dim L_Cnt As Integer Dim Linha As Long Set Area = [B5:B29] Y = TOPO L_Frt = 5 For Each Fruta In Area If WorksheetFunction.CountIf(Area(1).Resize( _ Fruta.Row - Area.Row + 1), Fruta.Value) = 1 Then Linha = Linha + 1 Set lblFruta = Me.Controls.Add("Forms.Label.1", , True) Set lblConta = Me.Controls.Add("Forms.Label.1", , True) lblFruta.Width = W_FRUTA lblConta.Width = W_CONTA If Linha Mod 43 = 0 Then Y = TOPO L_Frt = L_Cnt + lblConta.Width + DIST_X End If lblFruta.Left = L_Frt lblConta.Left = lblFruta.Width + lblFruta.Left lblFruta.Caption = Fruta.Value lblConta.Caption = _ Format(WorksheetFunction.CountIf(Area, Fruta.Value), "00") lblConta.ForeColor = RGB(255, 0, 0) lblFruta.Top = Y lblConta.Top = Y L_Cnt = lblConta.Left Y = Y + lblFruta.Height + DIST_Y End If Next Fruta End Sub
  18. Para a margem superior você pode multiplicar a quantidade de pontos por 6 (acredito essa seja a distância entre os pontos) e atribuir esse valor a Top. A propriedade da cor do controle é ForeColor, atribua RGB(255,0,0) para deixar a color vermelha. Em relação ao ajuste das 3 colunas eu não entendi.
  19. Adicionei outra planilha antes de salvar para o arquivo com a macro não ficar salvo e ativo como csv. Sub CSV_ALUNO() Dim Arquivo As String Dim PlanCSV As Workbook Arquivo = "C:\documentos\000_ALUNO.csv" Set PlanCSV = Workbooks.Add Call ThisWorkbook.Sheets("ALUNO").Copy(PlanCSV.Sheets(1)) Call PlanCSV.SaveAs(Filename:=Arquivo, FileFormat:=xlCSV, Local:=True) Call PlanCSV.Close(False) End Sub
  20. Para testar o código crie um formulário em branco. Os controles serão adicionados a partir do canto superior esquerdo. Se quiser mudar a posição é em Top e Left. Private Sub UserForm_Initialize() Dim lblFruta As Control Dim lblConta As Control Dim Fruta As Range Dim Area As Range Dim I As Integer Dim Y As Integer Set Area = [B5:B29] For Each Fruta In Area I = I + 1 If WorksheetFunction.CountIf(Area(1).Resize(I), Fruta.Value) = 1 Then Set lblFruta = Me.Controls.Add("Forms.Label.1", , True) Set lblConta = Me.Controls.Add("Forms.Label.1", , True) lblFruta.Caption = Fruta.Value lblFruta.Top = Y lblFruta.Left = 5 lblConta.Caption = _ Format(WorksheetFunction.CountIf(Area, Fruta.Value), "00") lblConta.Left = 80 lblConta.Top = Y Y = Y + 10 End If Next Fruta End Sub
  21. Não deletou porque tem um caractere no início e o critério é para testar se o dado começa com a palavra. Apliquei a função Clean para tirar. Veja se assim resolve, Sub ExcluiLinha() Dim Linha As Long Dim Celula As Range For Linha = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count To 1 Step -1 Set Celula = ThisWorkbook.ActiveSheet.Cells(Linha, 1) If Left(WorksheetFunction.Clean(Celula.Value), Len("MINISTÉRIO")) = "MINISTÉRIO" _ Or Left(WorksheetFunction.Clean(Celula.Value), 3) = "001" _ Or Left(WorksheetFunction.Clean(Celula.Value), 3) = "003" Then Call Celula.EntireRow.Delete End If Next Linha End Sub
  22. Que tipo de teste deve ser feito para determinar se o link tem erro ou não?
  23. Pode mostrar um exemplo na planilha desses casos?
  24. Dessa forma acho que faz mais sentido adicionar os controles/labels via código em vez de desenhar manualmente um por um. Para isso tem o método Add de Control, p.ex, Me.Controls.Add("Forms.Label.1", , True) Você pode chamar Add em um loop para ir criando os labels enquanto atribuiu os nomes e as quantidades aos captions.
  25. @Antonio Baptista Veja se assim resolve, Sub ExcluiLinha() Dim Linha As Long Dim Celula As Range For Linha = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count To 1 Step -1 Set Celula = ThisWorkbook.ActiveSheet.Cells(Linha, 1) If Left(Celula.Value, Len("MINISTÉRIO")) = "MINISTÉRIO" _ Or Left(Celula.Value, 3) = "001" _ Or Left(Celula.Value, 3) = "003" Then Call Celula.EntireRow.Delete End If Next Linha End Sub

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

Mostrar 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

Mostrar mais  
×
×
  • Criar novo...