• DİKKAT

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

Userform ComboBox larda Tekrarlanma Sorunu

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

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,986
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Herkese iyi günler.

Sorunum şöyle;

UserFormdaki ÜRÜN başlıklı iki sütundaki ComboBoxlar ( 30 adet) verilerini
"U" sayfasından RowSource yöntemiyle alıyor.

UserFormda bu Comboboxlardan birinde seçilen ürünün diğer ComboBoxlarda
TEKRAR SEÇİLMESİNİ ENGELLEMEK İÇİN NE YAPMALIYIM.

İlgilenenlere şimdiden teşekkürler.
 

Ekli dosyalar

Merhaba,

Sanırım başlangıç aşamasındasınız. Bu sebeple kodları uzun uzun yazmışsınız. Kodları sadeleştirmek elbette mümkündür. Faka bunu sizin daha önce işlenen konuları inceleyerek ve forumda biraz zaman geçirerek kendiniz yapmalısınız. Forumdaki uygulamalı excel çalışmaları bölümündeki konuları inceleyebilirsiniz.

Şimdilik geçici bir çözüm sunuyorum.

Aşağıdaki kodu formunuzun kod bölümüne uygulayın.

Kod:
Sub Kontrol(Veri)
    Dim Nesne As Control
    If Veri = "" Then Exit Sub
    For Each Nesne In Me.Controls
        If TypeName(Nesne) = "ComboBox" Then
            If Me.ActiveControl.Name <> Nesne.Name Then
                If Veri = Nesne.Value Then
                    MsgBox "Başka seçim yapınız!", vbCritical
                    Me.ActiveControl = ""
                    Exit For
                End If
            End If
        End If
    Next
End Sub

Daha sonra bu kontrolü yapak istediğiniz COMBOBOX nesnelerinin CHANGE olaylarına aşağıdaki gibi eklemeler yapın. Ben ikisi için örnek veriyorum. Diğerlerini siz ayarlarsınız.

Kod:
Private Sub ComboBox101_Change()
    Kontrol (Me.ActiveControl)
End Sub

Private Sub ComboBox201_Change()
    Kontrol (Me.ActiveControl)
End Sub
 
Teşekkürler Korhan Bey

Kod yazma konusunda seviyem SIFIR olarak da tanımlanabilir.
O nedenle her nesne için tek tek yazıyorum.
Bu yaşta ancak bu kadar.
Yardım için teşekkürler.
Yazdığınız kodu belgeme işleyip bakacağım.
 
Merhaba,

Sanırım başlangıç aşamasındasınız. Bu sebeple kodları uzun uzun yazmışsınız. Kodları sadeleştirmek elbette mümkündür. Faka bunu sizin daha önce işlenen konuları inceleyerek ve forumda biraz zaman geçirerek kendiniz yapmalısınız. Forumdaki uygulamalı excel çalışmaları bölümündeki konuları inceleyebilirsiniz.

Şimdilik geçici bir çözüm sunuyorum.

Aşağıdaki kodu formunuzun kod bölümüne uygulayın.

Kod:
Sub Kontrol(Veri)
    Dim Nesne As Control
    If Veri = "" Then Exit Sub
    For Each Nesne In Me.Controls
        If TypeName(Nesne) = "ComboBox" Then
            If Me.ActiveControl.Name <> Nesne.Name Then
                If Veri = Nesne.Value Then
                    MsgBox "Başka seçim yapınız!", vbCritical
                    Me.ActiveControl = ""
                    Exit For
                End If
            End If
        End If
    Next
End Sub

Daha sonra bu kontrolü yapak istediğiniz COMBOBOX nesnelerinin CHANGE olaylarına aşağıdaki gibi eklemeler yapın. Ben ikisi için örnek veriyorum. Diğerlerini siz ayarlarsınız.

Kod:
Private Sub ComboBox101_Change()
    Kontrol (Me.ActiveControl)
End Sub

Private Sub ComboBox201_Change()
    Kontrol (Me.ActiveControl)
End Sub

Korhan Bey yardım için teşekkür ederim, istediğim tam olarak buydu, ama başka UserFormlarımla ilgili de bir şeyler sormak istiyorum;

Bu mesaja eklediğim belgedeki UserForm3 de 20 adet, UserForm4 de ise 60 adet combobox var ve bunların isimleri sıralı durumda ( 1 den başlayarak ) , UserForm3 teki ComboBoxların Properties kısmından ayarlanmış kaynağı excel sayfalarından birindeki, UserForm4 deki ComboBoxların Properties kısmından ayarlanmış kaynağı ise başka bir sayfasındaki veri aralığı..

Bu UserFormlarla ( UserForm3 ve UserForm4 için ayrı ayrı) ilgili iki husus var;
1) birbirini izleyen iki comboboxta aynı verinin seçilememesi, aynı verinin seçilebilmesi için arada en az bir tane comboboxun kullanılmış olmasını sağlamak mümkün müdür?
2) Bir de bu User formumdaki comboboxların atlanmadan kullanılmasını sağlamak mümkün müdür? Yani örneğin 2. ComboBox kullanılmamışsa ( boşsa ) sonraki ComboBoxların kullanılmasını engellemek mümkün müdür acaba?

Eklediğim ve sizin yukarıdaki mesajdaki kodla ComboBoxlar için aynı verinin seçilmesini engellediğimiz UserForm5 ile ilgili husus da şöyle;

O formda her bir satır da bir tane ComboBox ve üç tane TextBox var,
Bir satırdaki bu dört nesnenin tümü kullanılmadan diğer satırlardaki nesnelerin kullanılmasını nasıl engellerim ve formun üst tarafındaki CeckBox seçildiğinde ilk satırdaki tarih ve saati başdaki combobox kullanılmış olan satırların tümüne aktarmayı nasıl yaparım acaba?

Biraz fazla oluyorum galiba ama bilmediğimiz konuda bir şeyler yapmaya çalışınca maalesef durum bu (50 yaşından sonra olmayacak işlere dalıyorum galiba) .
Uzun uzun sordum kusura bakmayınız lütfen.
 

Ekli dosyalar

Ekine belge ekleyerek yeni konu açtım.

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