• DİKKAT

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

Userformda iki tarih arasını listboxlarda görüntüleme

Katılım
17 Ocak 2008
Mesajlar
183
Excel Vers. ve Dili
2003
Merhaba arkadaşlar,
Userform konusunda çok yeniyim ekte ilk userform çalışmam var. excel web tr. den siz değerli hocalarımın katkılarıyla userformu belli bir aşamaya getirdim.
Kayıt adlı Userfomda Textbox2 ye başlangıç tarihi ,Textbox6 ya da bitiş tarihi girip ara butonuna bastığımda Kayıt adlı sayfadaki tarihler süzülüp listboxlarda görüntülensin istiyorum.
Userform yeni açıldığında Textbox6 nesnesinde güncel tarih olmalı ve bu tarihe ait kayıtların listboxlarda görünmesi lazım Yapılabilirliğini bilmiyorum.Yardımlarınızı rica ediyorum
 

Ekli dosyalar

Merhaba arkadaşlar,
Userform konusunda çok yeniyim ekte ilk userform çalışmam var. excel web tr. den siz değerli hocalarımın katkılarıyla userformu belli bir aşamaya getirdim.
Kayıt adlı Userfomda Textbox2 ye başlangıç tarihi ,Textbox6 ya da bitiş tarihi girip ara butonuna bastığımda Kayıt adlı sayfadaki tarihler süzülüp listboxlarda görüntülensin istiyorum.
Userform yeni açıldığında Textbox6 nesnesinde güncel tarih olmalı ve bu tarihe ait kayıtların listboxlarda görünmesi lazım Yapılabilirliğini bilmiyorum.Yardımlarınızı rica ediyorum

bu kodu denermisiniz.

Kod:
Private Sub CommandButton1_Click()
ListBox1.RowSource = ""
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "80;90"
ListBox2.RowSource = ""
ListBox2.Clear
ListBox2.ColumnCount = 2
ListBox2.ColumnWidths = "80;90"
ListBox3.RowSource = ""
ListBox3.Clear
ListBox3.ColumnCount = 2
ListBox3.ColumnWidths = "80;90"
Set sh = Sheets("KAYIT")
If WorksheetFunction.CountA(sh.Cells) > 0 Then
satson = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sutson = Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Else
Exit Sub
End If
sat1 = 0
sat2 = 0
sat3 = 0
On Error Resume Next
If IsDate(TextBox2.Text) = True Then
If IsDate(TextBox6.Text) = True Then

For i = 3 To satson
If CDate(TextBox2.Text) <= CDate(Format(sh.Cells(i, "a").Value, "dd.mm.yyyy")) & Chr(10) _
And CDate(TextBox6.Text) >= CDate(Format(sh.Cells(i, "a").Value, "dd.mm.yyyy")) Then
ListBox1.AddItem
ListBox1.List(sat1, 0) = sh.Cells(i, "b").Value
ListBox1.List(sat1, 1) = sh.Cells(i, "c").Value
sat1 = sat1 + 1
End If
If CDate(TextBox2.Text) <= CDate(Format(sh.Cells(i, "e").Value, "dd.mm.yyyy")) & Chr(10) _
And CDate(TextBox6.Text) >= CDate(Format(sh.Cells(i, "e").Value, "dd.mm.yyyy")) Then
ListBox2.AddItem
ListBox2.List(sat2, 0) = sh.Cells(i, "F").Value
ListBox2.List(sat2, 1) = sh.Cells(i, "G").Value
sat2 = sat2 + 1
End If

If CDate(TextBox2.Text) <= CDate(Format(sh.Cells(i, "ı").Value, "dd.mm.yyyy")) & Chr(10) _
And CDate(TextBox6.Text) >= CDate(Format(sh.Cells(i, "ı").Value, "dd.mm.yyyy")) Then
ListBox3.AddItem
ListBox3.List(sat3, 0) = sh.Cells(i, "j").Value
ListBox3.List(sat3, 1) = sh.Cells(i, "k").Value
sat3 = sat3 + 1
End If
Next
End If
End If
End Sub
 
Halit hocam eline emeğine sağlık güzel olmuş.

Bir konuda daha yardıma ihtiyacım var,

Userform açıldığında listboxlar da bugün tarihli bilgilerin görünmesi mümkün olurmu acaba Liste binlerce satır kayıtlardan oluşacağından eski kayıtlar görünmesin istiyorum. Yani sabah ilk kaydı yapan kişinin karşısına listboxlar boş gelsin. Bu sağlanamazsa listboxlarda son 2 satırın devamlı boş görünmesi sağlanabilirmi listbox dolduğu zaman son yapılan kayıt ancak kaydırma çubuğu kullanılarak görünüyor
 
Halit hocam eline emeğine sağlık güzel olmuş.

Bir konuda daha yardıma ihtiyacım var,

Userform açıldığında listboxlar da bugün tarihli bilgilerin görünmesi mümkün olurmu acaba Liste binlerce satır kayıtlardan oluşacağından eski kayıtlar görünmesin istiyorum. Yani sabah ilk kaydı yapan kişinin karşısına listboxlar boş gelsin. Bu sağlanamazsa listboxlarda son 2 satırın devamlı boş görünmesi sağlanabilirmi listbox dolduğu zaman son yapılan kayıt ancak kaydırma çubuğu kullanılarak görünüyor

Açılışdaki kodu UserForm_Initialize aşağıdakiyle değiştirin.?

Kod:
Private Sub UserForm_Initialize()
     
TextBox2 = Format(Now, "dd.mm.yyyy")
TextBox6 = Format(Now, "dd.mm.yyyy")
   
CommandButton3.Tag = CommandButton3.BackColor 'commoand buton 2
CommandButton9.Tag = CommandButton9.BackColor 'commoand buton 2
KAYIT.ComboBox1.RowSource = "VERİ!A2:A" & [VERİ!A65536].End(3).Row
KAYIT.ComboBox2.RowSource = "VERİ!B2:B" & [VERİ!B65536].End(3).Row
CommandButton1_Click
End Sub
 
Merhaba hocam,
önceki mesajımdaki isteğim userform açıldığında listboxlara güncel tarihli bilgilerin otomatik gelmesi idi.
İlk verdiğiniz kodu commandbuttona atadım textbox2 ve textbox6 nesnesine yazdığımız tarihe göre veri listeleniyor bu noktada sıkıntı yok(Ben bu kodu daha sonra BUL adlı userforma taşıdım burada da sorunsuz çalışıyor) Userformun initialize olayına son verdiğiniz kodları yazdım ancak userform açıldığında tüm kayıtları listeliyor (textbox2 ve textbox6 daki bugün tarihli bilgiler butona tıklanınca geliyor). biryerde hatamı yaptım yoksa sonuç normalmi açıkcası tam bilmiyorum Bu arada kodu BUL adlı userforma taşıdığımdan KAYIT adlı userformdaki ARA butonuna ve ilgili textboxlara ihtiyacım kalmadı bunları devre dışı bırakarak KAYIT adlı userformda sadece kayıt yapılan güne ait bilgileri listelemek istiyorum. Ancak bu yapıldığında düzelt ve sil butonlarının işlevselliği bozulmamalı zira ARA butonuna (commandbutton1_click) bağladığımız kodla çalışırken listboxda seçilen veriler kayıt adlı sheet de siniyor ancak userform yeniden açılıncaya kadar listboxda görünüyordu. Silme veya düzeltme işlemi yaptığımda anlık lsitboxlardan izlemeliyim. Biliyorum bu konuda sizi çok yordum anlayışınız ve ilginiz için teşekkür ederim.
 
Son düzenleme:
Merhaba hocam,
önceki mesajımdaki isteğim userform açıldığında listboxlara güncel tarihli bilgilerin otomatik gelmesi idi.
İlk verdiğiniz kodu commandbuttona atadım textbox2 ve textbox6 nesnesine yazdığımız tarihe göre veri listeleniyor bu noktada sıkıntı yok(Ben bu kodu daha sonra BUL adlı userforma taşıdım burada da sorunsuz çalışıyor) Userformun initialize olayına son verdiğiniz kodları yazdım ancak userform açıldığında tüm kayıtları listeliyor (textbox2 ve textbox6 daki bugün tarihli bilgiler butona tıklanınca geliyor). biryerde hatamı yaptım yoksa sonuç normalmi açıkcası tam bilmiyorum Bu arada kodu BUL adlı userforma taşıdığımdan KAYIT adlı userformdaki ARA butonuna ve ilgili textboxlara ihtiyacım kalmadı bunları devre dışı bırakarak KAYIT adlı userformda sadece kayıt yapılan güne ait bilgileri listelemek istiyorum. Ancak bu yapıldığında düzelt ve sil butonlarının işlevselliği bozulmamalı zira ARA butonuna (commandbutton1_click) bağladığımız kodla çalışırken listboxda seçilen veriler kayıt adlı sheet de siniyor ancak userform yeniden açılıncaya kadar listboxda görünüyordu. Silme veya düzeltme işlemi yaptığımda anlık lsitboxlardan izlemeliyim. Biliyorum bu konuda sizi çok yordum anlayışınız ve ilginiz için teşekkür ederim.


aşağıdaki kırmızı yazan yerleri silerek denermisiniz.

Kod:
Private Sub UserForm_Initialize()
     
TextBox2 = Format(Now, "dd.mm.yyyy")
TextBox6 = Format(Now, "dd.mm.yyyy")
   
CommandButton3.Tag = CommandButton3.BackColor 'commoand buton 2
CommandButton9.Tag = CommandButton9.BackColor 'commoand buton 2
[COLOR=red]KAYIT.ComboBox1.RowSource = "VERİ!A2:A" & [VERİ!A65536].End(3).Row
KAYIT.ComboBox2.RowSource = "VERİ!B2:B" & [VERİ!B65536].End(3).Row[/COLOR]
CommandButton1_Click
End Sub
 
Listboxlarda RowSource özelliklerini kaldırdım listboxlara bir sutün ekledim sıranumarası oradan doğru gelecektir.
 

Ekli dosyalar

Merhaba,
İlginize çok teşekkür ederim. Allah sizden razı olsun.
Hocam textbox2 nesnesine bugün den başlamak üzere geçmişe dönük en fazla 7 gün lük kayıtları silme yada düzenleme yapan bir if koşulana ihtiyaç duydum bugün 17.11.2010 ise 10.11.2010 ve daha önceki tarihlerdeki kayıtların silinip düzenlenmesini engelleyen bir kod gerekli. Yani TexTbox2 nesnesindeki tarih bugün tarihli günden 7 gün ve üzeri geçmişse silme ve düzeltme işlemi yapılamaz mesajı verilsin. Hocam inşallah bu son isteğim olacak bu konuda sizi daha fazla yormak istemiyorum.
 
Son düzenleme:
Merhaba,
İlginize çok teşekkür ederim. Allah sizden razı olsun.
Hocam textbox2 nesnesine bugün den başlamak üzere geçmişe dönük en fazla 7 gün lük kayıtları silme yada düzenleme yapan bir if koşulana ihtiyaç duydum bugün 17.11.2010 ise 10.11.2010 ve daha önceki tarihlerdeki kayıtların silinip düzenlenmesini engelleyen bir kod gerekli. Yani TexTbox2 nesnesindeki tarih bugün tarihli günden 7 gün ve üzeri geçmişse silme ve düzeltme işlemi yapılamaz mesajı verilsin. Hocam inşallah bu son isteğim olacak bu konuda sizi daha fazla yormak istemiyorum.

Değiştir ve sil komut düğmelerinin içine ilk satıra aşağıdaki kodu ekleyiniz.

Kod:
If CDate(TextBox2.Text) <= CDate(Format(Now, "dd.mm.yyyy")) - 7 Then
MsgBox "7 Günden önceki işlemler yapılamaz.!"
Exit Sub
End If
 
Merhaba ,
Halit bey 7 nolu mesajdaki örnek dosyada listboxda seçim yapıp önce ARA sonra DÜZELT butonuna tıkladığımda Debug hatası çıkıyor bunun önüne geçilebilirmi .Birde 1.KONTROL listesinden seçim yapılıp düzelt butonu tıklandığıda önce satır numarasını gösteren mesajın çıkması engellenebilir mi ? Sizi fazlasıyla yordum hakkınızı helal ediniz.
 
Merhaba ,
Halit bey 7 nolu mesajdaki örnek dosyada listboxda seçim yapıp önce ARA sonra DÜZELT butonuna tıkladığımda Debug hatası çıkıyor bunun önüne geçilebilirmi .Birde 1.KONTROL listesinden seçim yapılıp düzelt butonu tıklandığıda önce satır numarasını gösteren mesajın çıkması engellenebilir mi ? Sizi fazlasıyla yordum hakkınızı helal ediniz.

7 nolu mesajdaki dosyayı yeniden düzenledim kontrol ediniz.
 
Merhaba.,
İlginiz için çok teşekkür ederim 7. nolu mesajdaki dosya son hali ile gayet güzel çalışıyor .
Hocam tam bitti derken beklenmedik bir debug hatası çıktı (normal çalıştığında sorun yok ).
O da şöyle örneğin düzenleme yapmak için listboxda seçim yaptığımızda kayıda ait bilgiler combobox1 , combobox2 ve textbox1 e görüntüleniyor sicil ve ürün kodunda değişiklik yapıp düzelt dediğimizde sorun yok Combobox1 de ki kontrol yeri değiştirildiğinde debug hatası çıkıyor haliyle yani kullanıcının listboxda seçim yaptığında Combobox1 içeriğini değiştirmemesi için engel koymalıyız diye düşünüyorum
 
Merhaba.,
İlginiz için çok teşekkür ederim 7. nolu mesajdaki dosya son hali ile gayet güzel çalışıyor .
Hocam tam bitti derken beklenmedik bir debug hatası çıktı (normal çalıştığında sorun yok ).
O da şöyle örneğin düzenleme yapmak için listboxda seçim yaptığımızda kayıda ait bilgiler combobox1 , combobox2 ve textbox1 e görüntüleniyor sicil ve ürün kodunda değişiklik yapıp düzelt dediğimizde sorun yok Combobox1 de ki kontrol yeri değiştirildiğinde debug hatası çıkıyor haliyle yani kullanıcının listboxda seçim yaptığında Combobox1 içeriğini değiştirmemesi için engel koymalıyız diye düşünüyorum

Combobox1 den kontrol yerinin değişmemesi gerekiyor.?
Şöyle örnek olarak listbox2 den bir veriyi seçtiğinizde bu veriye ait satır numarasını aklında tutuyor kod Combobox1 den Listbox1 e ait 1 Kontrol ü seçtiğiniz zaman Listbox2 deki satır değeriyle Listbox1 deki satır değerleri farklı olduğundan hatta hiç satır değeri olmadığından seçilmemiş gibi işlem yapılacağından hata verecektir. burada onada bir kontrol mekanizması ekledim.
 

Ekli dosyalar

Halit bey elinize emeğinize sağlık çok güzel olmuş. Allah sizlerden razı olsun
 
Geri
Üst