Vídeo recomendado
https://youtu.be/diWPPPhW-9E

ListView![RESOLVIDO]

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
epplenas
Colaborador
Colaborador
Mensagens: 97
Registrado em: Sex Ago 15, 2014 12:06 am

ListView![RESOLVIDO]

Mensagem por epplenas »

Boa Tarde!

Tenho um form onde são inseridos o nº de NF e são salvos na planilha....como faço para carregar o listview, para que apareça da seguinte maneira:

NF...................Item.........................Qtde
383232............Bala...........................100
383232...........Chocolate.....................100
383232...........Caramelo......................50
383232...........Sorvete.........................50
383232...........Chiclete.......................200

Deste jeito que gostaria de carregar:
NF...................Qtde
383232.............500

ou seja, mostrasse na ListView o soma da NF

Grato por enquanto!
Editado pela última vez por epplenas em Sáb Dez 06, 2014 8:30 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: ListView!

Mensagem por joseA »

Não entendi, os dados digitados serão sempre com a mesma NF?
Editado pela última vez por joseA em Sex Nov 21, 2014 3:50 pm, em um total de 1 vez.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: ListView!

Mensagem por joseA »

Em todo caso, essa rotina retorna no ListView exatamente o quê você solicitou.

Código: Selecionar todos

Private Sub UserForm_Initialize()
    Dim NF As Long
    Dim wsDados As Worksheet
    Dim result As Long
'nº NF
        On Error Resume Next

    NF = InputBox("Informe o nº da NF", "Solicitação")
    '----- Preenchimento ListView------------------------
    With ListView1
            .Gridlines = True
            .ListItems.Clear
            .FullRowSelect = True
'Define o número de colunas e cabeçalhos
        With .ColumnHeaders
            'Remove cabeçalhos antigos
            .Clear
            'Adicionado 2 colunas, especificando o nome do cabeçalho
            'e a largura das colunas
            .Add , , "NF", 80
            .Add , , "Qtde", 50
        End With
        'Enchendo a primeira coluna (criação da 1ª linha)
        With .ListItems
           .Add , , NF
         End With
         
        'Calculando e preenchendo a coluna 2 da 1ª linha
Set wsDados = Plan1
    result = Application.WorksheetFunction.SumIfs(wsDados.Columns(3), wsDados.Columns(1), NF)
        .ListItems(1).ListSubItems.Add , , result
        
    End With
    
    'Especifica o modo de exibição "Detalhes"
    ListView1.View = lvwReport
End Sub


epplenas
Colaborador
Colaborador
Mensagens: 97
Registrado em: Sex Ago 15, 2014 12:06 am

Re: ListView!

Mensagem por epplenas »

grato pelo retorno!


porém a rotina esta não "puxa" nada....

aparece tudo em branco


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: ListView!

Mensagem por joseA »

Achei estranho sua pedida, porque pensa bem, você irá ter sempre a mesma Nota Fiscal?
epplenas escreveu:...porém a rotina esta não "puxa" nada....
aparece tudo em branco
Aparece primeiramente um ImputBox para vc digitar o nº da NF como parâmetro e clicar em OK, se não o fizer não haverá preenchimento.


epplenas
Colaborador
Colaborador
Mensagens: 97
Registrado em: Sex Ago 15, 2014 12:06 am

Re: ListView!

Mensagem por epplenas »

joseA, Boa Noite!


na verdade acho que eu não expliquei por completo, o exemplo q eu citei foi paenas de 01 NF, no caso gostaria que se eu tivesse , por exemplo, sei lá, 10 NF's, ele fizesse este processo:

NF......................Item................Qtde
1010 ------------------1510-----------------100
1010 ------------------1520------------------100
1010 ------------------1530------------------500
1020 ------------------2020------------------100
1020 ------------------2025------------------300
1020 ------------------3401------------------300
1030 ------------------5311------------------200
1030 ------------------5312------------------200
1030 ------------------5235------------------100
1040 ------------------4010------------------50
1040 ------------------4034------------------50
1040 ------------------3435------------------50

no caso acima, mostra 03 NF's diferentes, gostaria que a listview mostraria conforme abaixo:
NF......................Qtde
1010------------------700
1020------------------700
1030------------------500
1040------------------150


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: ListView!

Mensagem por joseA »

Mas, se reler no meu 1º post alertei sobre isso.

Código: Selecionar todos

Private Sub UserForm_Initialize()
    Dim n As Long, texto As Variant
    Dim qt As Integer
    
Dim wsDados As Worksheet
Dim X As Integer
Dim result As Long

    qt = Plan1.[A2].CurrentRegion.Rows.Count

        On Error Resume Next

    '----- Preenchimento ListView------------------------
    With ListView1
            .Gridlines = True
            .ListItems.Clear
            .FullRowSelect = True
'Define o número de colunas e cabeçalhos
        With .ColumnHeaders
            'Remove cabeçalhos antigos
            .Clear
            'Adicionado 2 colunas, especificando o nome do cabeçalho
            'e a largura das colunas
            .Add , , "NF", 70
            .Add , , "Qtde", 50
        End With
' Selecionando dados exclusivos da coluna NF e adicionando no controle ##
    For n = 2 To qt
        If Plan1.Cells(n, 1) = "" Then Exit For
        If InStr(texto, Plan1.Cells(n, 1)) = 0 Then
            texto = texto & "|" & Plan1.Cells(n, 1) '& "|"
        End If
    Next
        texto = Split(texto, "|")
    For i = 1 To UBound(texto)
        With .ListItems
           .Add , , texto(i)
         End With
    Next
                
    End With
    
    'Especifica o modo de exibição "Detalhes"
    ListView1.View = lvwReport
'Loop nos dados da 1ª coluna p/ parâmetros
For X = 1 To ListView1.ListItems.Count
'Calculando e preenchendo a coluna 2 da 1ª linha
Set wsDados = Plan1

    result = Application.WorksheetFunction.SumIfs(wsDados.Columns(3), wsDados.Columns(1), ListView1.ListItems(X))
          
          ListView1.ListItems(X).SubItems(1) = result
Next

End Sub


Douglas Vargas
Colaborador
Colaborador
Mensagens: 57
Registrado em: Sáb Ago 16, 2014 10:44 am

Re: ListView!

Mensagem por Douglas Vargas »

Olá,

O que o amigo JoseA está explicando está correto. Porém eu faria algo bem mais fácil e rápido.... ao lado da listview adaptaria uma combobox ..... da para personalizar fica bom...ai to faz a soma separada.... ai tu vai ter que fazer mais adaptações.... 8-) 8-)


epplenas
Colaborador
Colaborador
Mensagens: 97
Registrado em: Sex Ago 15, 2014 12:06 am

Re: ListView!

Mensagem por epplenas »

joseA....Boa Tarde!


Agora deu certo.....obrigado!!!!!

aproveitando e abusando, em um form tenho o seguinte código no botão salvar:

Private Sub CommandButton6_Click()
Dim iRow_1 As Long
Dim ws_1 As Worksheet

Set ws_1 = Worksheets.Application.Sheets("EXPEDIÇÃO")
iRow_1 = ws_1.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row

For X = 1 To 36 Step 3
If Controls("Textbox" & X).Value <> "" Then
ws_1.Cells(iRow_1, 1).Value = Controls("Textbox" & X).Value
ws_1.Cells(iRow_1, 2).Value = Controls("Textbox" & X + 1).Value
ws_1.Cells(iRow_1, 3).Value = Controls("Textbox" & X + 1).Value
ws_1.Cells(iRow_1, 4).Value = TimeValue(Label243)
ws_1.Cells(iRow_1, 5).Value = Label242
ws_1.Cells(iRow_1, 6).Value = ComboBox1
ws_1.Cells(iRow_1, 7).Value = ComboBox2
iRow_1 = iRow_1 + 1
End If
Next

Call Preenche
MsgBox "Migo registrada com Sucesso!", vbOK, "Expedição"

For Each ctr In Controls
If TypeName(ctr) = "TextBox" Then
ctr.Text = ""
End If
Next


este código lança as 20 textbox do form......porem apresenta um erro.....eu só consigo que o código funcione quando tenho 02 textbox, por exemplo

textbox1----------textbox2
textbo3-----------textobx4 deste modo ele salva o registro

no caso eu queria com a opção de tres textbox, exemplo:
textbox1--------------textbox2------------textbox3
textbox4--------------textbox5------------textbox6

Grato por enquanto!


Avatar do usuário
joseA
Jedi
Jedi
Mensagens: 1048
Registrado em: Qui Out 22, 2009 7:22 am
Localização: Cel. Fabriciano - MG

Re: ListView!

Mensagem por joseA »

Penso que seria menos trabalhoso, se você referenciasse os textbox's um a um e não o conjunto como vem fazendo. Qualquer coisa anexe o modelo. ;)


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder