• DİKKAT

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

Comboboxla istenilen sayfadan bilgi çekme

Katılım
20 Şubat 2009
Mesajlar
49
Excel Vers. ve Dili
Excel 2019 ve 2021
Başka bir konu altında da mesajımı yazmıştım ama görülmediğini düşünerek yeni bir konu açıyorum. Hatam varsa affola.

Sorunuma gelecek olursam; öncelikle elimde giriş, eylül, ekim, kasım gibi 4 tane sayfa var. userformda combobox oluşturdum. 1. combobox bu 4 sayfadan sadece ayları seçecek, giriş kısmı görünmeycek. 2. combobox seçilen sayfadaki isimlerden istenileni seçecek. 3.combobox seçilen sayfadaki seçilen isme ait tarihi seçecek. textboxa yazılan bilgi o tarihe kaydedecek. 2. textboxta kişinin tüm sayfalardaki toplam bilgisini gösterecek.

Örnek dosya ekte mevcut.
 

Ekli dosyalar

Merhaba,

Comboları hallettim, ama textbox1 e ne yazılacak ve bu seçilen isim ve tarihin karşısına mı yazılacak ?
 
Texbox1 e bilgi girişi yapılacak. Örneğin ahmet isimli kişi 1 Eylül tarihinde izinli olduğu için gelmedi. Bunun içinde sadece "i" yazılacak ve seçilen sayfa ve tarihteki kısma i gelecek. Yani Eylül sayfasında ahmetin gelmedi 1 eylül tarihinin altına (B3hücresine) "i" gelcek.
 
Merhaba,

İZİNGİRİŞ Formun kodları :

Kod:
Private Sub ComboBox1_Change()
    On Error Resume Next
    Dim Syf As Worksheet
    Dim i   As Integer
    Set Syf = Sheets(ComboBox1.Value)
 
    ComboBox3.Clear
 
    i = 3
    Do While IsDate(Syf.Cells(2, i))
        ComboBox3.AddItem Format(Syf.Cells(2, i), "dd.mm.yyyy")
        i = i + 1
    Loop
    ComboBox2.SetFocus
 
    Sheets(ComboBox1.Value).Select
 
End Sub

Kod:
Private Sub ComboBox2_Change()
    On Error Resume Next
 
    Dim Syf As Worksheet, _
        sp  As Worksheet, _
        Poz As Integer, _
        Kol As Integer, _
        Sat As Integer, _
        i   As Integer, _
        Top As Integer, _
        c   As Range, _
        Aylar
 
    Aylar = Array("Ocak", "Şubat", "Mart", "Nisan", _
                  "Mayıs", "Haziran", "Temmuz", "Ağustos", _
                  "Eylül", "Ekim", "Kasım", "Aralık")
 
    For Each Syf In Worksheets
        Poz = 0
        Kol = 100
        Sat = 10000
        Poz = Application.WorksheetFunction.Match(Syf.Name, Aylar, 0)
        If Poz > 0 Then
            'toplam gelmediği günün bulunduğu sütunu saptıyoruz
            Kol = Syf.Cells.Find("*", , , , xlByColumns, xlPrevious).Column - 1
            'Personelin bulunduğu satır numarasını arıyoruz
            Set c = Syf.Range("B:B").Find(ComboBox2.Value, LookIn:=xlValues)
            If Not c Is Nothing Then Sat = c.Row
            Top = Top + Syf.Cells(Sat, Kol)
        End If
    Next
        TextBox1.Value = Top
End Sub

Kod:
Private Sub ComboBox3_Change()
    Dim Son As Integer, _
        Sat As Integer, _
        Kol As Integer, _
        Syf As Worksheet, _
        c   As Range
 
    Set Syf = Sheets(ComboBox1.Value)
 
    Son = Syf.Cells(Rows.Count, "A").End(3).Row
    Sat = Application.WorksheetFunction.Match(ComboBox2.Value, Syf.Range("B1:B" & Son), 0)
 
    Set c = Syf.Range("2:2").Find(CDate(ComboBox3.Value), LookIn:=xlFormulas)
    If Not c Is Nothing Then
       Kol = c.Column
    Else
        MsgBox "TARİHİ BULAMADIM ...."
        Exit Sub
    End If
 
    If Syf.Cells(Sat, Kol) = "İ" Then
        ComboBox4.Value = "İzinli"
    ElseIf Syf.Cells(Sat, Kol) = "R" Then
        ComboBox4.Value = "Raporlu"
    ElseIf Syf.Cells(Sat, Kol) = "S" Then
        ComboBox4.Value = "Sevkli"
    Else
        ComboBox4.Value = ""
    End If
End Sub

Kod:
Private Sub CommandButton1_Click()
    Dim Son As Integer, _
        Sat As Integer, _
        Kol As Integer, _
        Syf As Worksheet, _
        c   As Range
 
    Set Syf = Sheets(ComboBox1.Value)
 
    Son = Syf.Cells(Rows.Count, "A").End(3).Row
    Sat = Application.WorksheetFunction.Match(ComboBox2.Value, Syf.Range("B1:B" & Son), 0)
    Kol = Application.WorksheetFunction.Match(CDbl(CDate(ComboBox3.Value)), Syf.Range("2:2"), 0)
 
'    Set c = Syf.Range("2:2").Find(CDate(ComboBox3.Value), LookIn:=xlFormulas)
'    If Not c Is Nothing Then
'       Kol = c.Column
'    Else
'        MsgBox "TARİHİ BULAMADIM ...."
'        Exit Sub
'    End If
 
    Syf.Cells(Sat, Kol) = Left(ComboBox4.Value, 1)
 
    MsgBox ComboBox1.Value & " Sayfasındaki " & ComboBox2.Value & _
            " Kişinin " & ComboBox3.Value & " Tarihe karşılık gelen hücreye işlenmiştir", vbInformation, "N. YEŞERTENER-->www.excel.web.tr"
 
    '------------------------------------------------
    ' FORMDA SİLİNMESİ GEREKEN BİLGİLERİ SİZ SİLİNİZ
    '------------------------------------------------
    ComboBox3.Value = ""
    ComboBox4.Value = ""
End Sub

Kod:
Private Sub CommandButton4_Click()
    Unload Me
    Sheets("PERSONEL").Select
    ANA.Show
End Sub

Kod:
Private Sub UserForm_Initialize()
    On Error Resume Next
 
    Dim Syf As Worksheet, _
        sp  As Worksheet, _
        Poz As Integer, _
        i   As Integer, _
        Aylar
 
    Set sp = Sheets("PERSONEL")
 
    Aylar = Array("Ocak", "Şubat", "Mart", "Nisan", _
                  "Mayıs", "Haziran", "Temmuz", "Ağustos", _
                  "Eylül", "Ekim", "Kasım", "Aralık")
 
    For Each Syf In Worksheets
        Poz = 0
        Poz = Application.WorksheetFunction.Match(Syf.Name, Aylar, 0)
 
        If Poz > 0 Then ComboBox1.AddItem Syf.Name
    Next
 
    If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
    For i = 2 To sp.Cells(Rows.Count, "C").End(3).Row
        ComboBox2.AddItem sp.Cells(i, "C")
    Next i
    ComboBox4.AddItem ""
    ComboBox4.AddItem "İzinli"
    ComboBox4.AddItem "Raporlu"
    ComboBox4.AddItem "Sevkli"
 
End Sub
 

Ekli dosyalar

Çok teşekkür ederim. Tam istediğim gibi olmuş. Bunla ilgili bir sorum daha olacak. Sayfaları hangi kodla seçtiğinizi söylermisiniz. Ben baş bi yerde kullanacağım için sayfa seçme kodlarını öğrenmek istiyorum.
 
..............................................................
 
Son düzenleme:
Bugün mesajınızı gördüm, ilgileneceğim.

Ama dosyanız xl nin menülerini bozup duruyor, illet olurum bu olaya
hiç olmazsa onları çıkartıp dosyanızı koysaydınız. Bu tür şeyleri kullanmaya neden gerek görürsünüz ki?

Sonra gönderdiğiniz dosya ile sizin gerçek dosya arasında baya fark var, hiç olmazsa örnek dosyanızda ocak, şubat .... aralık dışında da çok sayfa olduğunu söyleseydiniz kodların mantığını ona göre kurardık.

Şimdi yeniden düzenleme yapmak gerek.

Boş durma boşa çalış misali yani.

Fırsat bulduğmuda ilgilenecem, eğer başka arkadaşlar ilgilenmezse.
 
İlginiz için saolun. Açıkcası hangi kodların bozduğunu tam bilmiyorum. Bu konuda yeniyim. Burdan aldığım bilgilerle bi şeyler yapmaya çalışıyorum. İnş bittiği zamanda sizlerle paylaşırım. İşine yarayacak bir kişi bile olursa beni memnun eder.
 
Merhaba,

Sorduğunuz sorudaki örnek dosya ile gerçek dosyanız arasında baya fark vardı.

İzin Giiş Formunun kodları aşağıdaki gibi oldu.

Ocak.....Aralık diye ay adları ile belirtilen sayfalarda başlıkların son sütunu "TOPLAM GÜN SAYISI" ve bundan bir önceki sütun da "TOPLAM GELMEDİĞİ GÜN" olduğunu varsaydım. Buna göre toplam gelmediği günü bulurken sondan bir önceki sütunun olduğunu varsaydım.

Değişken sütun olduğu için böyle düşündüm. Yani kısaca toplam günü bulabilmek için son sütundün bir önceki sutünu bakıyorum.

Bu sayfalardaki toplam gün sayısı için formül ekledim. Dizi Formüldür.
Dizi formül yazıldıktan sonra enter değil Ctrl+Shift+Enter ile formül yazılımının bitirilmesi gerekir.

Kodların içindeki "Application.CommandBars("Worksheet Menu Bar").Enabled = False" satırı bir kaç yerde geçmektedir, bunları çıkartınız menüyü düzenleyen kodlardır bunlar.


Umarım işinize yarar.

Kod:
Private Sub ComboBox1_Change()
    On Error Resume Next
    Dim Syf As Worksheet
    Dim i   As Integer
    Set Syf = Sheets(ComboBox1.Value)
    
    ComboBox3.Clear
    
    i = 3
    Do While IsDate(Syf.Cells(2, i))
        ComboBox3.AddItem Format(Syf.Cells(2, i), "dd.mm.yyyy")
        i = i + 1
    Loop
    ComboBox2.SetFocus
    
    Sheets(ComboBox1.Value).Select
    
End Sub

Kod:
Private Sub ComboBox2_Change()
    On Error Resume Next
    
    Dim Syf As Worksheet, _
        sp  As Worksheet, _
        Poz As Integer, _
        Kol As Integer, _
        Sat As Integer, _
        i   As Integer, _
        Top As Integer, _
        c   As Range, _
        Aylar
        
    Aylar = Array("Ocak", "Şubat", "Mart", "Nisan", _
                  "Mayıs", "Haziran", "Temmuz", "Ağustos", _
                  "Eylül", "Ekim", "Kasım", "Aralık")
                  
    For Each Syf In Worksheets
        Poz = 0
        Kol = 100
        Sat = 10000
        Poz = Application.WorksheetFunction.Match(Syf.Name, Aylar, 0)
        If Poz > 0 Then
            'toplam gelmediği günün bulunduğu sütunu saptıyoruz
            Kol = Syf.Cells.Find("*", , , , xlByColumns, xlPrevious).Column - 1
            'Personelin bulunduğu satır numarasını arıyoruz
            Set c = Syf.Range("B:B").Find(ComboBox2.Value, LookIn:=xlValues)
            If Not c Is Nothing Then Sat = c.Row
            Top = Top + Syf.Cells(Sat, Kol)
        End If
    Next
        TextBox1.Value = Top
End Sub

Kod:
Private Sub ComboBox3_Change()
    Dim Son As Integer, _
        Sat As Integer, _
        Kol As Integer, _
        Syf As Worksheet, _
        c   As Range
    
    If ComboBox3.Value = "" Then Exit Sub
    Set Syf = Sheets(ComboBox1.Value)
    
    Son = Syf.Cells(Rows.Count, "A").End(3).Row
    Sat = Application.WorksheetFunction.Match(ComboBox2.Value, Syf.Range("B1:B" & Son), 0)
    Kol = Application.WorksheetFunction.Match(CDbl(CDate(ComboBox3.Value)), Syf.Range("2:2"), 0)
        
    If Syf.Cells(Sat, Kol) = "İ" Then
        ComboBox4.Value = "İzinli"
    ElseIf Syf.Cells(Sat, Kol) = "R" Then
        ComboBox4.Value = "Raporlu"
    ElseIf Syf.Cells(Sat, Kol) = "S" Then
        ComboBox4.Value = "Sevkli"
    Else
        ComboBox4.Value = ""
    End If
End Sub

Kod:
Private Sub CommandButton1_Click()
    Dim Son As Integer, _
        Sat As Integer, _
        Kol As Integer, _
        Syf As Worksheet, _
        c   As Range
    
    Set Syf = Sheets(ComboBox1.Value)
    
    Son = Syf.Cells(Rows.Count, "A").End(3).Row
    Sat = Application.WorksheetFunction.Match(ComboBox2.Value, Syf.Range("B1:B" & Son), 0)
    Kol = Application.WorksheetFunction.Match(CDbl(CDate(ComboBox3.Value)), Syf.Range("2:2"), 0)
        
    Syf.Cells(Sat, Kol) = Left(ComboBox4.Value, 1)
    
    MsgBox ComboBox1.Value & " Sayfasındaki " & ComboBox2.Value & _
            " Kişinin " & ComboBox3.Value & " Tarihe karşılık gelen hücreye işlenmiştir", vbInformation, "N. YEŞERTENER-->www.excel.web.tr"
            
    '------------------------------------------------
    ' FORMDA SİLİNMESİ GEREKEN BİLGİLERİ SİZ SİLİNİZ
    '------------------------------------------------
    ComboBox3.Value = ""
    ComboBox4.Value = ""
End Sub

Kod:
Private Sub CommandButton4_Click()
    Unload Me
    Sheets("PERSONEL").Select
    ANA.Show
End Sub

Private Sub UserForm_Initialize()
    On Error Resume Next
    
    Dim Syf As Worksheet, _
        sp  As Worksheet, _
        Poz As Integer, _
        i   As Integer, _
        Aylar
        
    Set sp = Sheets("PERSONEL")
    
    Aylar = Array("Ocak", "Şubat", "Mart", "Nisan", _
                  "Mayıs", "Haziran", "Temmuz", "Ağustos", _
                  "Eylül", "Ekim", "Kasım", "Aralık")
                  
    For Each Syf In Worksheets
        Poz = 0
        Poz = Application.WorksheetFunction.Match(Syf.Name, Aylar, 0)
        
        If Poz > 0 Then ComboBox1.AddItem Syf.Name
    Next
        
    If ComboBox1.ListCount > 0 Then ComboBox1.ListIndex = 0
    For i = 2 To sp.Cells(Rows.Count, "C").End(3).Row
        ComboBox2.AddItem sp.Cells(i, "C")
    Next i
    ComboBox4.AddItem ""
    ComboBox4.AddItem "İzinli"
    ComboBox4.AddItem "Raporlu"
    ComboBox4.AddItem "Sevkli"
    
End Sub
 

Ekli dosyalar

Sayın Necdet bey tam istediğim gibi olmuş bu konuda size teşekkür ederim. Ancak hata veriyor. Bu konuda da yardımcı olurmusunuz. Hata kodunu şurda yaşıyorum:

Kod:
Private Sub ComboBox3_Change()

    Dim Son As Integer, _
        Sat As Integer, _
        Kol As Integer, _
        Syf As Worksheet, _
        c   As Range
    
    Set Syf = Sheets(ComboBox1.Value)
    
    Son = Syf.Cells(Rows.Count, "A").End(3).Row
    Sat = Application.WorksheetFunction.Match(ComboBox2.Value, Syf.Range("B1:B" & Son), 0)
    
  [COLOR="DarkRed"]  Set c = Syf.Range("2:2").Find(CDate(ComboBox3.Value), LookIn:=xlFormulas)[/COLOR]    If Not c Is Nothing Then
       Kol = c.Column
    Else
        MsgBox "TARİHİ BULAMADIM ...."
        Exit Sub
    End If
    
    If Syf.Cells(Sat, Kol) = "İ" Then
        ComboBox4.Value = "İzinli"
    ElseIf Syf.Cells(Sat, Kol) = "R" Then
        ComboBox4.Value = "Raporlu"
    ElseIf Syf.Cells(Sat, Kol) = "S" Then
        ComboBox4.Value = "Sevkli"
    Else
        ComboBox4.Value = ""
    End If

End Sub

şu kodda yaşıyorum

Kod:
Set c = Syf.Range("2:2").Find(CDate(ComboBox3.Value), LookIn:=xlFormulas)
 
Merhaba,

Şu an size yardımcı olamayacağım, ben o kodlari 2007 sürümüne göre deneyip vermiştim ve çalışıyordu.

2003 olmadığı için 2003 olan arkadaşlardan destek almalıyız, yoksa bayram sonunu beklemek gerekir :)
 
Şu ana kadar yaptığınız herşey için teşekkür ederim. Gerçekten çok güzel oldu sayenizde programım. Ama tek o hata kaldı onuda halledersem program bitti sayılır.

Bu kounda bana yardımcı olacak arkadaşlar yardım ederlerse çok sevinirim.
 
Merhaba,

Kodları ve dosyayı yeniledim ama şaşırıp 4. mesajıma eklemişim, tekrar dener misiniz?

Umarım 2003 sürümünde çalışır.
 
Maalesef yine aynı hata oluştu. Bugün kodlarla biraz uğraşınca sorunun kayıttan sonra textbox3 teki yazıları silmeye çalışınca oluştuğunu gördüm. Kayıttan sonra textoxları boşaltmasa sorun oluşmuyor ancak bu seferde farklı bir aya geçince sorun yaşamaya başladım. Textboxlar birbiriyle ilişkili olduğu için silmeye çalışınca sorun yaşıyor.
 
Merhaba,

Evet haklısınız ekledikten sonra sildiğim değerlere hata veriyormuş, ona dikkat etmemişim.

10. mesajda (bu sefer doğru mesajda) kodları ve dosyayı düzelttim tekrar.
 
İlginiz ve uğraşınız için çok teşekkür ederim. Sayenizde istediğim şey oldu.
 
Personel İşlemleri Modülü

Sevgili Necdet Bey bu dosyanın kullanıcı adı ve şifresi nedir buraya yazarsanız böyle güzel programlarınızdan bizlerde yararlanmış oluruz saygı ve sevgilerimle
 
Geri
Üst