IMAGENS DO TREEVIEW SOMEM AO REABRIR A PLANILHA

MSCPP 04/04/2013 11:22:19
#421505
Pessoal estou tendo um problema daqueles que parecem meio inexplicáveis. Mas espero que alguem consiga explicar rs

Eu tenho uma treeview em uma planilha q serve como indice para navegar entre as abas, qdo eu dou um duplo clique em algum nó ele vai pra aba. Eu populo ela via vba e utilizo imagens de uma image list para os nós. Eu coloquei as imagens na image list [Ô]na mão[Ô] e uso o key das imagens para escolher qual imagem vai para cada nó. Até aí tudo tranquilo, funciona perfeitamente.

Mas quando eu mando salvar a planilha ele expande todos os nós do treeview, o q é inconveniente mas se fosse só isso dava pra levar, então eu fecho a planilha e qdo eu abro ela de novo todas as imagens dos nós sumiram. E não adianta rodar de novo a rotina q popula a treeview, nada acontece, e olha q eu dou um nodes.clear no inicio da rotina. Nada faz as imagens voltarem, tentei alterar o style da treeview para sem e depois com imagem, tentei inserir uma rotina pra inserir as imagens ao abrir a planilha e por ai vai, mas nda adianta, o unico jeito é deletar a treeview, adicionar outra e rodar a rotina pra popular ela, assim volta tudo ao normal.

Eu até tentei botar uma rotina pra qdo ele abrir a planilha ele deletar o treeview e adicionar outra e popular ela, mas deu uns erros e essa solução seria meio [Ô]porca[Ô].

Alguem faz idéia do q está acontecendo?

Desde já muito obrigado!

Abraços

O código q popula a treeview é esse:
Citação:


Dim nivel1 As String
Dim nivel2 As String
Dim img As String

Sheets([Ô]Índice[Ô]).tv_indice.ImageList = Sheets([Ô]TV[Ô]).ImageList_indice
With Sheets([Ô]Índice[Ô]).tv_indice.Nodes
.Clear
For i = 2 To 87

If Sheets([Ô]TV[Ô]).Cells(i, 1).Value = 1 Then
img = Sheets([Ô]TV[Ô]).Cells(i, 2).Value
.Add Key:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value & i, Text:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value, Image:=img
nivel1 = Sheets([Ô]TV[Ô]).Cells(i, 2).Value & i
ElseIf Sheets([Ô]TV[Ô]).Cells(i, 1).Value = 2 Then
.Add relative:=nivel1, relationship:=tvwChild, Key:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value & i, Text:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value, Image:=img
nivel2 = Sheets([Ô]TV[Ô]).Cells(i, 2).Value & i
ElseIf Sheets([Ô]TV[Ô]).Cells(i, 1).Value = 3 Then
.Add relative:=nivel2, relationship:=tvwChild, Key:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value & i, Text:=Sheets([Ô]TV[Ô]).Cells(i, 2).Value, Image:=img

End If
Next
End With


Explicando o código: eu tenho uma aba q fica oculta q nela a primeira coluna é o nivel da linha, a segunda é o nome, q junto do número da linha eu tb uso como key, e na terceira coluna tem a aba pra qual ele deve ir, q eu uso na rotina de quando alguem dá um duplo clique no nó. As imagens já estão com o mesmo nome de todos os q são do nivel 1, e todos q estão abaixo dele usam a mesma imagem.

Informação adicional: Uma coisa que estou fazendo que não é usual é q a minha treeview está diretamente na planilha, n está em um form. Outra coisa q notei a pouco é q de tempos em tempos do nada o treeview se expande todo.
MSCPP 04/04/2013 14:42:44
#421520
Eu resolvi parcialmente o problema. Eu desisti de fazer o treeview diretamente na planilha e coloquei ele num form. Eu abro o form através de um botão e cada vez q ele abre uma rotina carrega a treeview. Resolveu parcialmente pq eu queria q a treeview fosse exibida diretamente na planilha. Tem como fazer um subform na planilha do excel? Eu sei q no access da pra botar um subform em qq form, mas nunca vi algo parecido em uma planilha. Alguem sabe se dá?
Faça seu login para responder