ürün ağacını excelden treeview' e alma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
25 Kasım 2007
Mesajlar
6
Excel Vers. ve Dili
2007 eng
Selam arkadaşlar,
Çok uğraşmama ve forumlarda aramama rağmen ekteki excelde görünen bir ürün ağacını bir butona basarak treeview objesini aktifleştirip, excelde görüldüğü gibi merdiven şeklinde sıralamayı beceremedim. bu konu hakkında yardımcı olursanız minnettar olurum.
İyi çalışmalar,
Mustafa
 

Ekli dosyalar

Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sayfa üzerindeki yapı; ister yine sayfa üzerindeki Treeview'e, ister Userform üzerindeki bir Treeview nesnesine eklenebilir.

Ama; treeview'e yüklemenin anlamı nedir?

Treeview'i bir başka amaç için kullanmayacaksanız ve amacınız sadece iyi organize edilniş bir ürün ağacı görünümü ise; Excel'in "Diagram ve kuruluş şeması" nesneleri işinizi rahatlıkla görecektir.

"Ürün Ağacı" olarak forumda arama yaparsanız; geçmişte yaptığımız bu tür birkaç örneğe ulaşabilirsiniz. Ama tercih sizin tabiki ...
 
Katılım
25 Kasım 2007
Mesajlar
6
Excel Vers. ve Dili
2007 eng
treeview görünümümde elde etmek istememdeki amaç aslında tamamen fabrikamızda kullandığımız MRP/ERP programı nedeniyle. şöyle ki; mrp programında tanımladığım bir sürü ürün ağacı var. bunları raporlama ile excele atabiliyorum fakat uzun ürün ağaçlarında aradığımı bulmak zor oluyor.

bu nedenle treeview görünümü sayesinde yarımamül bazında alt ürün ağaçlarını kapattığımda daha sade ürün ağaçı elde edip aradığımı kolaylıkla bulabiliyorum.

bütün amaç karmaşıklığı giderme aslında.
bu önceden göndermiş olduğum basit ürün ağacını excelde treeview görünümünde elde ettirecek makro işimi inanılmaz kolaylaştıracak.
yardımlarınızı bekler, iyi çalışmalar dilerim.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ekteki örnek dosyayı inceleyiniz.

İlgili sayfaya birer adet Treeview, İmageList ve CommandButton nesneleri yerleştirilmiştir.

Kodlama aşağıda verildiği şekilde yapılmıştır.

Not : Sayfa üzerinde kullanılan Treeview nesnesi ilk açılışta, görüntülenme sorunu yaşatabilir. Ekranı bir kere refresh yapmanız yeterlidir (Yani ekranı aşağı yukarı gezdirin veya başka bir sayfaya geçip tekrar buraya geri dönün)

Kod:
Option Explicit
Private Sub CommandButton1_Click()
    
    Dim lSvy As Long
    Dim x As Long
    Dim i As Long
    Dim j As Long
    
    For i = 1 To Cells(65536, 2).End(xlUp).Row
        Cells(i, 1) = (Len(Cells(i, 2)) - Len(Trim(Cells(i, 2)))) / 5
    Next i
    
[COLOR=DarkGreen]    'Ağaçtaki seviye sayısı hesaplanıyor[/COLOR]
    lSvy = Cells(19, "F").Value
    
    With TreeView1
        'Trw görünüm ayarları
        .Indentation = 2
        .Nodes.Clear
        .ImageList = Nothing
        .ImageList = ImageList1
        
[COLOR=DarkGreen]        'Ürünün kendisi ilave ediliyor -- 0 Seviye[/COLOR]
        .Nodes.Add , , "X0", Cells(1, 2), 1
        
[COLOR=DarkGreen]        '------------
        'Aşağıdaki bölümde Yarımamul ve malzemeler ilave ediliyor
        '------------
        'tüm seviyeleri tara[/COLOR]
        For x = 1 To lSvy
[COLOR=DarkGreen]            'Tüm satırları tara[/COLOR]
            For i = 2 To Cells(65536, 2).End(xlUp).Row
[COLOR=DarkGreen]                'Eğer sırası gelen hücre ilgilendiğimiz seviyede ise[/COLOR]
                If Cells(i, 1) = x Then
[COLOR=DarkGreen]                    'Sondan başa doğru yürü[/COLOR]
                    For j = i To 1 Step -1
[COLOR=DarkGreen]                        'Eğer hücre değeri, bir seviye üstü gösteriyorsa[/COLOR]
                        If Cells(j, 1) = x - 1 Then
[COLOR=DarkGreen]                            'Bu seviyeye bağlı bir node oluştur[/COLOR]
                            If x = 1 Then
                                .Nodes.Add "X" & j - 1, tvwChild, "X" & i, Trim(Cells(i, 2)), 2
                            Else
                                .Nodes.Add "X" & j, tvwChild, "X" & i, Trim(Cells(i, 2)), 2
                            End If
                            Exit For
                        End If
                    Next j
                End If
            Next i
        Next x
        .Nodes(1).Expanded = True
    End With
    
    Range(Cells(1, 1), Cells(Cells(65536, 2).End(xlUp).Row, 1)).ClearContents

End Sub
 

Ekli dosyalar

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst