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.
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
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.
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
combobox1'2 sütunlu yapıp ilk sütunu gizledim, 2. sütunu ilişkili sütun yaptım
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