Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
LaerteB

Preciso inserir dados na Listview de células preenchidas de colunas selecionadas

Recommended Posts

Bom dia Pessoal.

Estou com um problema que não consigo resolver (verifiquei em meus livros, na net e nada que solucione), o que estou querendo fazer é o seguinte:

Inserir dados da planilha 01 na Listview (até aí já está feito), só que tem três colunas nesta planilha 01 que se refere a respostas de ações tomadas, mas só é preenchida (na linha) uma das três (desta forma uma fica preenchida e as outras duas ficam vazias). Na Listview tem todas as colunas da planilha 01 menos duas (eu deixei somente uma coluna de ação tomada), nesta coluna (na Listview) chamada ações será preenchida com a célula da coluna (das três colunas de ações tomadas) que não estiver vazia, e é neste ponto que não estou conseguindo.

Gostaria que vocês pudessem me ajudar a informar como devo proceder para que somente uma das células da plan1 (das três colunas ações) que está preenchida preencha a única coluna de Ação da Listview.

Estou anexando as imagens da plan1 e da Listview com os códigos desta Listview abaixo.

Private Sub UserForm_Initialize()

With ListView1
    .Gridlines = True 'Exibe/oculta as linhas da grade
    .View = lvwReport 'Estilo da Exibição
    .FullRowSelect = True 'Permite Selecionar uma lista

    'Adicona Colunas com seus parametros, neste caso Texto, tamanho e alinhamento
    .ColumnHeaders.Add Text:="REMESSA", Width:=80, Alignment:=lvwColumnLeft
    .ColumnHeaders.Add Text:="PEDIDO", Width:=40, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="DESTINATÁRIO", Width:=140, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="CIDADE", Width:=100, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="UF", Width:=20, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="OCORRENCIA", Width:=120, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="DATA OCORRENCIA", Width:=100, Alignment:=lvwColumnCenter
    .ColumnHeaders.Add Text:="AÇÃO", Width:=120, Alignment:=lvwColumnCenter


End With

Call Atualizar

End Sub

Private Sub Atualizar()
Dim Item As ListItem
Dim LinhaFinal As Integer
Dim i As Integer

ListView1.ListItems.Clear

LinhaFinal = Plan1.Cells(Rows.Count, 2).End(xlUp).Row


For i = 2 To LinhaFinal
    Set Item = ListView1.ListItems.Add(Text:=Plan1.Cells(i, 2))
    Item.SubItems(1) = Plan1.Cells(i, 3)
    Item.SubItems(2) = Plan1.Cells(i, 4)
    Item.SubItems(3) = Plan1.Cells(i, 5)
    Item.SubItems(4) = Plan1.Cells(i, 6)
    Item.SubItems(5) = Plan1.Cells(i, 7)
    Item.SubItems(6) = Format(Plan1.Cells(i, 8), "DD MMM YYYY") 'Formatar data do mês com três letras e sem /
    Item.SubItems(7) = Plan1.Cells(i, 9)

Next

lb_num_registro.Caption = ListView1.ListItems.Count

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

'Clicando no cabeçalho de uma coluna da listview e será ordenado para Ascendente e Descendente
   With ListView1

    .SortKey = ColumnHeader.Index - 1

    If .SortOrder = lvwDescending Then
       .SortOrder = lvwAscending
    Else
       .SortOrder = lvwDescending
    End If

    .Sorted = True

   End With

End Sub

Private Sub bt_relatorio_Click()

Worksheets("Relatorio").Activate

'Intervalo das linhas e colunas entre A2 até H150
Worksheets("Relatorio").Range(Cells(2, 1), Cells(150, 8)).Select
Selection.ClearContents

End Sub

Obs: como sou novato em vba estou aprendendo, desta forma gostaria que me dessem um parecer de uma solução para este caso, se eu coloca-se a estrutura If … Then … Else, na linha " Item.SubItems(7) = Plan1.Cells(i, 9)" do preenchimento da Listview para selecionar somente os campos preenchidos na Plan1?? se for por este o método me deem um suporte, pois não sei como fazer isso para três linhas como mencionado acima (agradeceria muito).

 

Agradeço e aguardo uma resposta.

Laerte

Plan1 - Listview e suas acoes.jpg

Editado por LaerteB

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Pessoal!

 

No aguardo de uma ajuda, ainda não estou conseguindo.

 

Obrigado.

Laerte.

Editado por LaerteB
escrevi uma palavra que não era para ser

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, Bom dia!!

 

Não tem ninguém que possa me ajudar?? alguma sugestão? ou dica?

 

Aguardando uma resposta, estou precisando de uma solução logo, pois ainda não estou conseguindo resolver.

 

Agradeço muito.

 

Laerte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Disponibilize seu arquivo (compactado) ou um exemplo com alguns dados e não imagens do arquivo por favor.  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Basole!

Obrigado por responder e estou disponibilizando o arquivo (rar) com alguns dados para a sua análise.

Valeu e no aguardo.

Laerte.

FORMULARIO CADASTRO E PESQUISA teste.rar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Basole.

 

Agradeço a sua resposta e o arquivo que enviou com a mudança, estou analisando e testando.

Até o momento está como eu precisava, muito obrigado.

Amanhã vou analisar melhor o código que foi inserido e alterado (para o meu aprendizado), e como sempre vou informar aqui para que outros que tiverem a mesma dúvida possam utilizar dentro de seu projeto.

 

Valeu e obrigado.

Laerte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Pessoal e Basole.

 

Como havia informado na mensagem anterior, estou deixando os códigos com as alterações na Listview (das três colunas ações só uma está preenchida na planilha, e será preenchida em uma única coluna de Ação da Listview - conforme mensagens acima) para que possam alterar e inserir se adequando aos projetos de vocês; abaixo os códigos do preenchimento da Listview:

Private Sub Atualizar()
Dim Item As ListItem
Dim LinhaFinal As Integer
Dim i As Integer, j As Integer

ListView1.ListItems.Clear

LinhaFinal = Plan1.Cells(Rows.Count, 2).End(xlUp).Row


For i = 2 To LinhaFinal
    Set Item = ListView1.ListItems.Add(Text:=Plan1.Cells(i, 2))
    Item.SubItems(1) = Plan1.Cells(i, 3)
    Item.SubItems(2) = Plan1.Cells(i, 4)
    Item.SubItems(3) = Plan1.Cells(i, 5)
    Item.SubItems(4) = Plan1.Cells(i, 6)
    Item.SubItems(5) = Plan1.Cells(i, 7)
    Item.SubItems(6) = Format(Plan1.Cells(i, 8), "DD MMM YYYY") 'Formatar data do mês com três letras e sem /
    
    For j = 9 To 11
    If Sheets("Plan1").Cells(i, j) <> "" Then
      Item.SubItems(7) = Sheets("Plan1").Cells(i, j)
    Exit For
    End If
    Next j
Next i

lb_num_registro.Caption = ListView1.ListItems.Count

End Sub

Agradeço ao Basole a ajuda, muito obrigado.

 

Laerte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×