Excel e VBA: Utilizando Objeto TreeView - Parte II | Excelmax Soluções e Controles

domingo, março 24, 2013

Excel e VBA: Utilizando Objeto TreeView - Parte II

Excel e VBA: Utilizando o Objeto TreeView - Parte II

Na postagem anterior Excel e VBA: Utilizando o Objeto TreeView - Parte I vimos como iniciar e incluir o objeto TreeView em um formulário.

Veremos agora como fazer para popular ou, preencher o objeto TreeView com dados.
Primeiro,ajustamos alguns objetos no Formulário (UserForm) conforme apresntado na figura a seguir.

treeview, excel, vba, formulário, macro




















Veremos agora como fazer para popular ou, preencher o objeto TreeView com dados. As macros a seguir devem ser colocadas no Formulário (UserForm)

Macro: Inicialize (Initialize)

Esta macro preenche o objeto TreeView através da macro 'TV_Populate'.


Private Sub UserForm_Initialize()
    'Preenche o Treeview
    Call TV_Populate
End Sub


Macro: TV_Populate

Esta é macro menciona acima que é executada no evento 'Initialize'.


Private Sub TV_Populate()
    'Preenche os dados do controle TreeView
     Dim Lin As Integer
     Dim ultimaLinha As Integer
     Dim sKey As String
     Dim sKeyPai As String
     Dim S As String
     Dim iNivel As Integer
     Dim sTexto As String

     Me.TV.LineStyle = tvwTreeLines

     With TV.Nodes
          'Limpa os dados do controle
          .Clear

          'Última Linha
          ultimaLinha = PlanX.Cells(Cells.Rows.Count, 1).End(xlUp).Row

          For Lin = 2 To ultimaLinha
            sKey = Trim(PlanX.Cells(Lin, 3))
            S = PlanX.Cells(Lin, 2)

            'Nr de pontos ou niveis
            iNivel = 0
            sTexto = sKey
            While InStr(sTexto, ".") <> 0
                sTexto = Mid(sTexto, InStr(sTexto, ".") + 1, Len(sTexto))
                iNivel = iNivel + 1

                'Verificar qual o último Nível
                If iNivel > uNivel Then
                    uNivel = iNivel
                End If
            Wend

            If iNivel = 0 Then
                'Adiciona pai da treeview
                .Add _
                  Key:="K" & sKey, _
                  Text:=sKey & " - " & S
                'Negrito
                .Item(Lin - 1).Bold = True
            Else
                'Último nivel da hierarquia
                sKeyPai = sKey
                sKeyPai = StrReverse(sKeyPai)
                sKeyPai = Mid(sKeyPai, InStr(sKeyPai, ".") + 1, Len(sKeyPai))
                sKeyPai = StrReverse(sKeyPai)
                'Adiciona nó filho da treeview
                .Add _
                  relative:=("K" & sKeyPai), _
                  relationship:=tvwChild, _
                  Key:="K" & sKey, _
                  Text:=sKey & " - " & S
            End If

            'Expandir nó
            .Item(Lin - 1).Expanded = True
          Next
     End With

     Me.TV.Sorted = True
     Me.TV.FullRowSelect = True
End Sub

Macro: TV_NodeClick (ByVal Node As MSComctlLib.Node)

Esta macro é acionada quando clicamos em um item do objeto TreeView, e preenche os objetos TextBox com as devidas informações.

Private Sub TV_NodeClick(ByVal Node As MSComctlLib.Node)
    cdID = TV.SelectedItem.Indexbrig
    For i = 2 To PlanX.Cells(Cells.Rows.Count, 1).End(xlUp).Row
        If PlanX.Cells(i, 1).Text = cdID Then
            cdHier = PlanX.Cells(i, 3)
            cdDescricao = PlanX.Cells(i, 2)
            cdValor = PlanX.Cells(i, 5)
        End If
    Next
End Sub


Macros para mais ajustes e as macros para os botões 'Incluir', ' Alterar' e 'Excluir' são encontradas nas postagens:
Outras postagens aqui no 'ExcelMax Soluções' trazem mais dicas sobre criação de Formulários e utilização de objetos como: Label, TextBox, ComboBox, ListView, entre outros ...

Compartilhe com seus amigos.


DownLoad ExcelMax, Excel, VBA





Consultor e Professor: Ivair Claudio Ferrari.

Sobre o autor: Ivair Ferrari é Certificado: Microsoft Office Excel Specialist; Consultoria e Desenvolvimento de Soluções e Softwares em Excel/VBA, Bancos de dados Access, Firebird, Oracle, Interação com SAP/R3 e Treinamentos In-Company. YouTube | Facebook | LinkedIn | Twitter | Google Plus

2 comentários :

  1. Muito ... muito ... muito bom. Ha muito tempo queria ver este objeto em funcionamento e não encontramos matérias.

    Obrigado Professor.

    ResponderExcluir
  2. Professor: meus sinceros parabéns. Mais uma excelente matéria.

    Obrigado!

    Vander

    ResponderExcluir

Seja um participante desta comunidade !
Deixe aqui seu comentário e/ou sugestão.
Obrigado !

Ivair Claudio Ferrari

atualizar, excel, excelmax, ivair ferrari
topo, excelmax, excel, ivair ferrari