Bir Frame içindeki Comboxlardan veri seçilince kaybolması

Class Module İşlemleri

Bir Frame içindeki Comboxlardan veri seçilince kaybolması

İleti#1)  hsayar » 21 Şub 2010 12:24

Bir Frame içindeki Comboboxlardan bir veri seçilince diğerinin kaybolması olacaktı başlık düzeltirmisiniz

arr = Array (a, b, c, d, e, f, g) isminde ve değerlerinde bir dizimiz olsun.

Bunu userformun initalize olayında frmCBX frame içerisindeki combobox1, 2,3,4,5,6,7 nin listesine atadık.
ComboBox1.List = arr()

İstediğim
combobox1 den a seçilince diğerlerinden a değeri kaldırılsın
combobox3 den b seçilince diğerlerinden b değeri kaldırılsın

Şimdiden teşekkürler.
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: Bir Frame içindeki Comboxlardan veri seçilince kaybol

İleti#2)  Tarkan VURAL » 21 Şub 2010 14:40

Selamlar,

Bir UserForm1 oluşturun. Üzerine bir adet Frame çizin. Frame içine 7 adet ComboBox çizin.
UserForm1 kod sayfasına;
Kod: Tümünü seç
Private Sub UserForm_Initialize()
Call AC
End Sub

... yazın.

Bir Module1 oluşturun. Module1 kod sayfasına;
Kod: Tümünü seç
Option Base 1
Global dizi As Variant
Public n() As New Class1

Sub AC()
Dim i As Integer, c As Control
dizi = Array("a", "b", "c", "d", "e", "f", "g")
    i = 0
    For Each c In UserForm1.Controls
        If TypeName(c) = "ComboBox" Then
            i = i + 1
            ReDim Preserve n(1 To i)
            Set n(i).combo = c
            c.List = dizi
            End If
    Next c
End Sub

... yazın.

Bir Class1 oluşturun. Class1 kod sayfasına ;
Kod: Tümünü seç
Public WithEvents combo As msforms.ComboBox

Private Sub combo_Change()
If combo.Value = "" Then
    For i = LBound(dizi) To UBound(dizi)
        UserForm1.Controls("ComboBox" & i).Clear
        UserForm1.Controls("ComboBox" & i).Value = ""
    Next i
    Call AC
End If
End Sub

Private Sub combo_Click()
Dim veri As Variant
    veri = combo.ListIndex
    ComboBox = Int(Replace(combo.Name, "ComboBox", ""))
        For i = LBound(dizi) To UBound(dizi)
            If i <> ComboBox And veri <> -1 Then _
                UserForm1.Controls("ComboBox" & i).RemoveItem veri
        Next i
End Sub

... yazın. UserForm1 açın. ComboBox nesnelerinden birinde herhangi bir veri seçin. Diğer ComboBox' larda bu verilerin olmadığını göreceksiniz. Farklı bir ComboBox içinden bir veri daha seçin. Bu kez diğer boş olanlarda seçili iki verinin de olmadığını göreceksiniz. Farz edelim ki yanlış yazdınız. Herhangi bir yazılı ComboBox içindeki veriyi sildiğinizde tüm işlemler en başa dönecek ve her bir ComboBox için yeni seçimler yapmanız istenecek. Bu arada tüm ComboBox ' lar içine dizi ( array ) ile tanımladığınız veriler geri dönecek.

Çalışmalarınızda başarılar. ;) --)(
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27049
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Bir Frame içindeki Comboxlardan veri seçilince kaybol

İleti#3)  hsayar » 21 Şub 2010 18:25

Emeğiniz için teşekkürler ancak bir kere seçilen veri iptal edildikten sonra tekrar seçilmesi olanağı ortadan kalkmış.
Ben başka türlü bir çözüm getirdim.
Ancak sormak istediğim Class Modülde frame ataması nasıl yapılır?
COMBO_TEKRARSIZLISTE.rar


USERFORM
Kod: Tümünü seç
Option Explicit
Private Sub UserForm_Initialize()
Dim ufCTRL As Object
Dim i As Integer
'Set clssFrame = Me.Frame8
'ReDim Preserve FRAMELER(1)
'Set FRAMELER(1).clssFrame = Frame8

arrHEPSI = Array("", "A", "B", "C", "Ç", "D", "E", "F", "G", "Ğ", "H", "I")
  For Each ufCTRL In Me.Frame8.Controls
    If (TypeOf ufCTRL Is msforms.ComboBox) Then
       i = i + 1
       ReDim Preserve COMBOLAR(1 To i)
       Set COMBOLAR(i).combo = ufCTRL
       ufCTRL.List = arrHEPSI()
    End If
  Next
End Sub


MODULE1
Kod: Tümünü seç
Public arrHEPSI()
Public arrKLNLN()
Public arrKLNLK()
Public COMBOLAR() As New CLSCOMBOBVL
'Public FRAMELER() As New CLSCOMBOBVL

Sub KULLANILANVERI(ctrlALAN As msforms.UserForm, ctrlCOMBOBOX As ComboBox)
ReDim Preserve arrKLNLN(0)
arrKLNLN(0) = "..."
i = 1
  For Each ufCTRL In ctrlALAN.Controls
    If (TypeOf ufCTRL Is msforms.ComboBox) Then
      If ufCTRL.Text <> "" Then
        ReDim Preserve arrKLNLN(i)
        arrKLNLN(i) = ufCTRL.Text
        i = i + 1
      End If
    End If
  Next
  Set ufCTRL = Nothing
  arrKLNLK = Module2.fncDizideOlmayan(arrHEPSI, arrKLNLN)
 
  For Each ufCTRL In ctrlALAN.Controls
    If (TypeOf ufCTRL Is msforms.ComboBox) Then
      If ufCTRL.Name <> ctrlCOMBOBOX.Name Then
        If UBound(arrHEPSI) >= UBound(arrKLNLN) Then
            ufCTRL.List = arrKLNLK()
        Else
            Exit Sub
        End If
      End If
    End If
  Next
  Set ufCTRL = Nothing
End Sub


MODULE2
Kod: Tümünü seç
Function fncDizideOlmayan(aHepsi, aKars)
'Ferhat Pazarçevirdi'nin kodlarından uyarlamadır.
'hsr.xla eklenme 21022010 14:50
  Dim bBoo As Boolean
  Dim aBos()
  Dim i%, j%, x%
  fncDizideOlmayan = Array(Empty)
  If IsArray(aKars) And IsArray(aHepsi) Then
    If UBound(aKars) > 0 And UBound(aHepsi) > 0 Then
      For i = LBound(aHepsi) To UBound(aHepsi)
     
        For j = LBound(aKars) To UBound(aKars)
          If aHepsi(i) = aKars(j) Then
            bBoo = True
            Exit For
          End If
        Next j
               
        If Not bBoo Then
          x = x + 1
          ReDim Preserve aBos(1 To x)
          aBos(x) = aHepsi(i)
        End If
               
        bBoo = False
      Next i
    End If
  End If
fncDizideOlmayan = aBos
End Function


CLASSMODULE
Kod: Tümünü seç
Public WithEvents combo As msforms.ComboBox
'Public WithEvents clssFrame As msforms.frame
Private Sub Combo_Change()
    Call KULLANILANVERI(UserForm1.Frame8, combo)
'    Call KULLANILANVERI(clssFrame, combo)

End Sub
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: Bir Frame içindeki Comboxlardan veri seçilince kaybol

İleti#4)  hsayar » 21 Şub 2010 19:55

Benim ilave olarak istediğim bir şey var ama nasıl yapılacağını çözemedim:
Kod: Tümünü seç
Private Sub Combo_Change()
1    Call KULLANILANVERI(UserForm1.Frame8, combo)
' 2   Call KULLANILANVERI(Frame, combo)

End Sub


Kodlardfa 2. satırı kullanmak istiyorum, ancak Frame değerine İnitalizede değer atayamadım. Yardımarınız için teşekkürler.
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Bir Frame içindeki Comboxlardan veri seçilince kaybol

İleti#5)  hsayar » 21 Şub 2010 21:52

4. mesaj module 1 revize yaptım. comboboxların seçimlerini boşaltınca hata veriyordu düzeltmek için aşağıdaki şekilde düzellttim.
Kod: Tümünü seç
Sub KULLANILANVERI(ctrlALAN As MSForms.UserForm, ctrlCOMBOBOX As ComboBox)
ReDim Preserve arrKLNLN(0)
arrKLNLN(0) = ""
i = 1
  For Each ufCTRL In ctrlALAN.Controls
    If (TypeOf ufCTRL Is MSForms.ComboBox) Then
      If ufCTRL.Text <> "" Then
        ReDim Preserve arrKLNLN(i)
        arrKLNLN(i) = ufCTRL.Text
        i = i + 1
      End If
    End If
  Next
  Set ufCTRL = Nothing
  arrKLNLK = HSR.fncDizideOlmayan(arrNFKYBAS, arrKLNLN)
 
  For Each ufCTRL In ctrlALAN.Controls
    If (TypeOf ufCTRL Is MSForms.ComboBox) Then
      If ufCTRL.Name <> ctrlCOMBOBOX.Name Then
        If (UBound(arrNFKYBAS) - UBound(arrKLNLN)) = UBound(arrNFKYBAS) Then
            ufCTRL.List = arrNFKYBAS()
        ElseIf UBound(arrNFKYBAS) >= UBound(arrKLNLN) Then
            ufCTRL.List = arrKLNLK()
        Else
            Exit Sub
        End If
      End If
    End If
  Next
  Set ufCTRL = Nothing
End Sub
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: Cevap: Bir Frame içindeki Comboxlardan veri seçilince

İleti#6)  Tarkan VURAL » 22 Şub 2010 15:13

hsayar yazdı:Benim ilave olarak istediğim bir şey var ama nasıl yapılacağını çözemedim:
Kod: Tümünü seç
Private Sub Combo_Change()
1    Call KULLANILANVERI(UserForm1.Frame8, combo)
' 2   Call KULLANILANVERI(Frame, combo)

End Sub


Kodlardfa 2. satırı kullanmak istiyorum, ancak Frame değerine İnitalizede değer atayamadım. Yardımarınız için teşekkürler.

Bu ikinci satırdaki olay, hangi Combo içine veri yazıldı ise, onunla bağlantılı Frame nesnesinin hangisi olduğunu bulmak mı ?
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27049
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: Cevap: Cevap: Bir Frame içindeki Comboxlardan veri se

İleti#7)  hsayar » 22 Şub 2010 16:40

Tarkan VURAL yazdı:
hsayar yazdı:Benim ilave olarak istediğim bir şey var ama nasıl yapılacağını çözemedim:
Kod: Tümünü seç
Private Sub Combo_Change()
1    Call KULLANILANVERI(UserForm1.Frame8, combo)
' 2   Call KULLANILANVERI(Frame, combo)

End Sub


Kodlardfa 2. satırı kullanmak istiyorum, ancak Frame değerine İnitalizede değer atayamadım. Yardımarınız için teşekkürler.

Bu ikinci satırdaki olay, hangi Combo içine veri yazıldı ise, onunla bağlantılı Frame nesnesinin hangisi olduğunu bulmak mı ?


Doğrudur bu durumda Combo'nun bulunduğu frame'nin adı oalcak.
Geniş düşünecek olursak yeri gelince sadece page5 i içerecek, bazen bütün userformu içerecek şekilde bir kodlama olursa sevinirim.
Felaket Başa Gelmeden Evvel Önleyici ve Koruyucu Tedbirler Düşünmek Lazım.

Felaket Geldikten Sonra Dövünmenin Yararı Yoktur.

Mustafa Kemal ATATÜRK
Kullanıcı avatarı
hsayar
Site Dostu
 
Adı Soyadı:Hüseyin SAYAR
Kayıt: 18 Eyl 2008 09:30
Meslek: Çalışma Ekonomisti
Yaş: 40
İleti: 600
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Edirne/İpsala

Cevap: Bir Frame içindeki Comboxlardan veri seçilince kaybol

İleti#8)  Tarkan VURAL » 22 Şub 2010 17:02

Bu konuda inanın tecrübem yok ve nasıl yapılabileceğini kurgulayamıyorum.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27049
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü


Forum Class Module

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe