• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı dosya - Bir birine bağlı comboboxlar için yol

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Herkese iyi akşamlar,

Uzun zamandır uğraştığım bir dosya da veriler çoğaldıkça ileriye doğru bana sıkıntı çıkartacak sanırım.

Aynı Çalışma Kitabında bulunan verileri Comboboxlar'a nasıl bir yol belirlemeliyim ki başka bir kapalı çalışma kitabından almasını sağlayabilirim.


Forum da bulduğum bu kod;
Kod:
Private Sub MAJCombo(Combo As ComboBox, Niv As Byte, Optional V As String)
Dim Coll As New Collection
Dim L As Long
    For L = 1 To UBound(TabTemp, 1)
        If Niv = 0 Then
            TabTemp(L, 6) = 0
        Else
            TabTemp(L, 6) = Application.WorksheetFunction.Min(TabTemp(L, 6), Niv - 1)
            If TabTemp(L, Niv) = V Then
                TabTemp(L, 6) = TabTemp(L, 6) + 1
            End If
        End If
    Next L
    On Error Resume Next
    For L = 1 To UBound(TabTemp, 1)
        If TabTemp(L, 6) = Niv Then
            Coll.Add TabTemp(L, Niv + 1), CStr(TabTemp(L, Niv + 1))
        End If
    Next L
    On Error GoTo 0
    Combo.Clear
    For L = 1 To Coll.Count
        Combo.AddItem Coll.Item(L)
    Next L
End Sub

Userform da bulunan comboboxlar ile olan bağlantıyı farklı bir kitaptan almalıyım.
Kod:
Private Sub UserForm_Initialize()
Dim L As Long
    With Sheets("arabalargentr")
        L = .Range("W65536").End(xlUp).Row
        TabTemp = .Range(.Cells(1, 23), .Cells(L, 28)).Value
End With
    MAJCombo ComboBox1, 0
End Sub

Kod:
Option Explicit
Dim TabTemp As Variant


Private Sub ComboBox1_Change()
Dim L As Long
    For L = 1 To UBound(TabTemp, 1)
        TabTemp(L, 6) = 0
    Next L
    MAJCombo ComboBox2, 1, ComboBox1.Text
    ComboBox3.Clear
    ComboBox4.Clear
    ComboBox5.Clear
End Sub

Private Sub ComboBox2_Change()
    MAJCombo ComboBox3, 2, ComboBox2.Text
    ComboBox4.Clear
    ComboBox5.Clear
End Sub

Private Sub ComboBox3_Change()
MAJCombo ComboBox4, 3, ComboBox3.Text
ComboBox5.Clear
End Sub

Private Sub ComboBox4_Change()
MAJCombo ComboBox5, 4, ComboBox4.Text
End Sub

Tek istediğim arabalargentr sayfası farklı bir excel kitabın içersinde olacak ve comboboxlar da bu yolu izleyecek.

Sitede ki bir kaç combobox kapalı dosya örneklerine baktım ama birbirine bağlı benzer örnekler bulamadım.

Şimdiden çok teşekkür ederim.
 

Ekli dosyalar

Birbirine bağlı ComboBox'lar mı olacak ? Yoksa her ComboBox ayrı sütundan mı veri alacak ? Bunu netleştirebilirsek daha iyi olur kanaatindeyim....

Eğer ComboBox'lar birbirleriyle ilişkili olmayacak ise;
Önce klasörünüzün içinde kapalı.xls adında bir Excel dosyası oluşturun.
Bu Excel dosyasındaki bir sayfasının ismini arabalargentryapın ve A1 hücresine Marka yazın.
Altına da ComboBox'ta listelenmesini istediğiniz otomobil markalarını yazın ve kapalı.xls dosyasını kapatın...
Sonra diğer dosyanızı açıp, bir adet UserForm ilave edin, üzerine de bir adet ComboBox ve bir adet CommandButton ilave edin.
CommandButon Click olayına da aşağıdaki kodları yazın;

Kod:
Private Sub CommandButton1_Click()
    Dim con, rs As Object
    Dim dosya As String
    
    Set con = CreateObject("adodb.connection")
    Set rs = CreateObject("adodb.recordset")
    dosya = ThisWorkbook.Path & "\kapalı.xls"

    con.Open "provider=microsoft.jet.oledb.4.0;data source=" & dosya & _
    ";extended properties=""excel 8.0;hdr=yes"""

    rs.Open "select [Marka] from [arabalargentr$]", con, 1, 1
    ComboBox1.Column = rs.getrows

    rs.Close: con.Close
    dosya = vbNullString: Set rs = Nothing: Set con = Nothing
End Sub

Listeyi A-Z sıralaması yapmak için; yukardaki ilgili kodu aşağıdaki kodla değiştirebilirsiniz...
Kod:
rs.Open "select [Marka] from [arabalargentr$] order by [Marka] asc ", con, 1, 1
 
Teşekkür ederim,

Öncelikle comboboxlar bir biri ile ilişkili. Yani farz-ı misal ilk satırda araç markaları yazılı (Fiat,Opel,Tofaş,Toyota......) , ilk comboboxtan bu veriyi aldıktan sonra ikinci comboboxta bu araçların alt kategorilerin listelenmesi gerekiyor ve bu şekilde gidiyor.

Verdiğim kodları aktif olarak kullanıyorum ve arabalargentr adlı sayfadan alıyor. Benim amacım bu sayfanın başka bir kitap.xls 'den alınmasını istiyorum. Tek comboboxtan veriyi alıyorum ama birbirine bağlı olduğunda userform intialize bölümünde bulunan kodun başına dim yol = dosyayolu gibi bir tanımlaydı.

Özellikle kodları verdim ekli dosyada da kodlar var, belki basit bir ekleme ile çözülebilir diye düşünmüştüm.

Kod:
Private Sub UserForm_Initialize()
Dim L As Long
    [COLOR="Red"][B]With Sheets("arabalargentr")
        L = .Range("W65536").End(xlUp).Row
        TabTemp = .Range(.Cells(1, 23), .Cells(L, 28)).Value[/B][/COLOR]
End With
    MAJCombo ComboBox1, 0
End Sub
 
Konu güncelleme...Sorunumu çözemedim..

Örneğin hazırda bulunan kodlar üzerinden bir ekleme gerçekleştirsek, verileri kitap2.xls kitabı için mavi kodlar şeklinde bir ekleme gerçekleştirebilir miyiz?


Kod:
Private Sub UserForm_Initialize()
Dim L As Long

[COLOR="Red"][B]With[/B][/COLOR] [COLOR="Navy"][B]ThisWorkbook.Path & "\kitap2.xls" &[/B][/COLOR] [COLOR="red"][B]Sheets("arabalargentr")
        L = .Range("W65536").End(xlUp).Row
        TabTemp = .Range(.Cells(1, 23), .Cells(L, 28)).Value
End With[/B][/COLOR]
    MAJCombo ComboBox1, 0
End Sub
 
Son düzenleme:
İyi akşamlar,

Olursa olur , olmazsa canınız sağ olsun güncellemesi :) Son kez güncelleme :)
 
Geri
Üst