Combobox Vba Kodları Oluşturmak

1 2 3
27/01/2021, 23:47

conquerora

Merhaba
Userform üzerinden veri girişi yapmak için bir tasarım yaptım.
Ama form üzerindeki nesne ilişkileri eksik. comboboxların çalışması için yardımcı olabilirmisiniz.
10 adet combobox un 3 tanesi (sarı renkli) birbiri ile diğer renkler kendi arasında beyazlar ise bağımsız veri girecek.
Combobox lar haricinde 3 adet buton ve en altta listbox ile kayıt yapılmış verileri listeleyecek.
Tarih formatı yy.aa.yy ss:dd şekilde olmalı.
Comboboxlara listeye yer alan veri haricinde veri girilmemeli.
raporlama belirli iki tarih arasında pdf olmalı pdf mail ile gönderilecek.
28/01/2021, 00:36

berduş

biraz daha ayrıntılı açıklar mısınız; hangi combo hangi alandan veriyi neye göre alacak?
sarı sütunlardan veriler alınınca tesis sütunlarına göre mi diğer 2 combo veriyi alacak
ayrıca ilk önce bu 3 kombodan hangisi seçilecek? 2ünden birinde seçim yapılınca diğer 2si otomatik olarak aynı tesis verilerini mi alacak
28/01/2021, 09:20

conquerora

Merhaba Berduş

hangi combo hangi alandan veriyi neye göre alacak?
comboboxlar etiket adları ile cbox ve combobox sayfalarındaki tabloların başlıkları aynı.

sarı sütunlardan veriler alınınca tesis sütunlarına göre mi diğer 2 combo veriyi alacak
Evet dediğiniz gibi;
Tarih gg/aa/yy ss:dd formatında girildikten sonra vardiya seçilecek.
Vardiya numaraları diğer iki sarı combobox "tespit eden" ve "sorumlu adı" comcoboxları güncellemiş olacak.
Vardiya seçimi ile sarı comboların tesis sutünleri ortak bu şekilde ilgili alanlar görülmüş olacak.

ayrıca ilk önce bu 3 kombodan hangisi seçilecek? 2ünden birinde seçim yapılınca diğer 2si otomatik olarak aynı tesis verilerini mi alacak
İlk önce vardiya seçilecek sonra diğer iki sarı combo seçimi yapılacak.
29/01/2021, 13:27

berduş

ben sadece sarı olalar için yaptım siz aynı  mantığı kullanarak diğerleri için yaparsınız
Private Sub ComboBox1_Change()
With Sayfa3
sonstr = .Cells(.Rows.Count, "D").End(xlUp).Row
Me.ComboBox3.Clear
For x = 2 To sonstr
    If .Range("d" & x).Value = Me.ComboBox1.Column(0) Then Me.ComboBox3.AddItem .Range("E" & x).Value
Next x

sonstr = .Cells(.Rows.Count, "A").End(xlUp).Row
Me.ComboBox4.Clear
For x = 2 To sonstr
    If .Range("A" & x).Value = Me.ComboBox1.Column(0) Then Me.ComboBox4.AddItem .Range("B" & x).Value
Next x
End With
End Sub
Private Sub UserForm_Initialize()
sonstr = Sayfa3.Cells(Sayfa3.Rows.Count, "h").End(xlUp).Row
Me.ComboBox1.List = Sayfa3.Range("g2:h" & sonstr).Value
End Sub
29/01/2021, 15:39

berduş

combobox1'2 sütunlu yapıp ilk sütunu gizledim, 2. sütunu ilişkili sütun yaptım
29/01/2021, 22:44

feraz

Sütun gizlenmeyip ve tek sütunla alttaki gibi de olabilir.
Tabii Haliil hocamızınki tabi kısa kod.

Dim dic As Object, sonstr As Long

Private Sub ComboBox1_Change()
    Set dic = CreateObject("scripting.dictionary")
   
    With Sayfa3
        sonstr = .Cells(.Rows.Count, "h").End(xlUp).Row
        Me.ComboBox3.Clear
        For x = 2 To sonstr
            dic.Add Val(.Range("H" & x).Value), .Range("G" & x).Value
        Next x
       
        sonstr = .Cells(.Rows.Count, "d").End(xlUp).Row
        getir sonstr, "d", "e", Me.ComboBox3, .Name
       
        sonstr = .Cells(.Rows.Count, "a").End(xlUp).Row
        getir sonstr, "a", "b", Me.ComboBox4, .Name
    End With
    Set dic = Nothing
End Sub

Sub getir(son As Long, alan1 As String, alan2 As String, cbo As MSForms.ComboBox, sayfa As String)
    With ThisWorkbook.Sheets(sayfa)
        cbo.Clear
        For x = 2 To sonstr
            If dic(Val(ComboBox1.Value)) = .Range(alan1 & x).Value Then cbo.AddItem .Range(alan2 & x).Value
        Next
    End With
End Sub

Private Sub UserForm_Initialize()
    sonstr = Sayfa3.Cells(Sayfa3.Rows.Count, "h").End(xlUp).Row
    Me.ComboBox1.List = Sayfa3.Range("h2:h" & sonstr).Value
End Sub
1 2 3