TreeView Satırlarına Döngü İle Veri alma

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
641
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

Treeview satırlarına ya da menülerine döngü ile veri alınabilir mi. Daha doğrusu, ilgili TreeView satırları excel sayfasındaki verilerden oluşturulabilir mi.

Ekte örnek bir dosya mevcut. Liste adlı excel sayfasının A sütunu Malzeme Kodu, B sütunu ise Malzeme açıklamalarından oluşmakta. Malzeme Kodu ise 4 seviyeden ( kırılım ) oluşmakta. Uzunluk fonksiyonu ile 1, 3, 5 ve 9 olmak üzere dört seviye

Örneğin; aşağıdaki veriler örnek dosyadan alıntıdır. Burada yapmaya çalıştığım şey şu. A sütununda veri uzunluğu 1 olanları ana başlıklar, veri uzunluğu 3, 5 ve 9 olanlar ise alt grup1, alt grup2 ve detay kırılım şeklinde ifade edebilirim sanırım.

Excel sayfasında A ve B sütunlarında yer alan verileri tek bir sütun gibi birleştirerek treeview kırılımları oluşturulabilir mi??

Kod

Malzeme Adı

1​

Yiyecek

101​

ET

10101​

Dana Atleri

101010001​

Kıyma

101010002​

Kuşbaşı

101010003​

Antrikot

101010004​

Biftek

10102​

Tavuk ve Hindi

101020001​

Kanat Tavuk

101020002​

Pirzola Tavuk

101020003​

Göğüs Tavuk

101020004​

hindi

 

Ekli dosyalar

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
641
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025

Açtığım konu ile ilgili sayın Ferhat beyin daha önceki bir uygulamasına rasladım. Kodlardan anladığım aradığım şey örneğinde olduğu gibi. Kendimce uyarlamaya çalıştım ancak hata alıyorum. Aşağıdaki kodda eksik ya da yanlış olan nedir. Ferhat beyin örnek dosyasını da ayrıca ekledim. İncelemek isteyen olabilir diye.

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

Ekli dosyalar

walabi

Altın Üye
Katılım
22 Eylül 2012
Mesajlar
641
Excel Vers. ve Dili
excel 2010

excel 2013
Altın Üyelik Bitiş Tarihi
06-08-2025
Merhaba,

Bu konu ile ilgili yönlendirici yada çözüm olarak bir cevap alabilir miyim. Alıntı yapıp kendi dosyama uyarladığım kodlarda hata alıyorum. Nedeni anlamadım. Kod yazılımı mı hatalı yoksa nesneden kaynaklı bir hatamı çözemedim.
 
Üst