• DİKKAT !

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak Dosya Yükleme tamamen ücretsizdir.

Çözüldü Msg Box'da Döngü Sonucunu Biçimlendirme

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

OğuzTürkyılmaz

Yeni Üye
Katılım
12 Eyl 2021
Mesajlar
263
Çözümler
1
Aldığı beğeni
31
Excel V
Office 365 TR
Konu Sahibi
Merhaba uygulamada işsiz123 hocamın katkısıyla dosya açıldığı tarih itibarıyla 7 günlük periyotta muayene tarihleri gelen araçlar msgbox'ta karışık listeleniyor. Resimde gösterildiği gibi tarih kriterine uymayan hücreleri de boş şekilde gösteriyor 1024 karakter sınırı olduğu içinde aslında kritere uyan veriler bu boş kayıtlar yüzünden msg box da listelenemiyor. Resimde kırmızı çerçeve ile gösterdiğim bölümlerin msg box da görünmemesi ve tarihlerin karışık değil küçükten büyüğe sıralanması için kodu nasıl revize etmeliyim. Yardımlarınız için teşekkür ederim. MSG BOX.png
 
Çözüm
Sayın OğuzTürkyılmaz 23.sütuna aldığınız tarih formatları sorunlu görünüyor.
Muhtemelen buraya kayıt gönderirken o kodlarda format sıkıntısı var.
23. sütunu yeniden düzenledim. Döngüyle yeniden formatladım.
Süzme işlemini 25. sütuna aldım.

İkinci bir husus
Policeler sayfasındaki verileriniz Tablo2 de kayıtlı.
Biz sayfa işlemi yaparken Excel Tablo2 ye göre davranıyor.
Örneğin 60 satırlık bir tablo kaydınız var. 10 satır sildiğimizde
Tabloyu yeniden boyutlandırmadığımız için Excel tabloyu 60 satırlık
bir veri kitlesi olarak algılamaya devam eder. Tablonuzdan 10 kayıt silin
sonra Ad kutusundan tablo ismini seçin boş kayıtların da seçili olduğunu göreceksiniz.
sat diye bir son satır değişkeni tanımlayın.
sat = Cells(Rows.Count...
Merhaba,
Kodlamaya göre döngüyü oluşturulan sayfaya göre yapmalısınız.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

yerine ;

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

gibi olmalıdır.
 
Konu Sahibi
Merhaba,
Kodlamaya göre döngüyü oluşturulan sayfaya göre yapmalısınız.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

yerine ;

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

gibi olmalıdır.
Onu düzelttim teşekkür ederim. Poliçelerdeki son kaydın plaka numarasını 34 GGG 9009 ve muayene tarihini 05.06.2022 olarak değiştirdim programı kapatıp açtım fakat Sayfa3 deki Filtrelenen sonuçlara bu değiştirdiğim değer gelmedi. Dolayısıyla msgbox daki sonuçlara da yansımadı. Ya kodda bir sıkıntı var yada ben bir şeyleri atlıyorum ama bulamadım.


Screenshot_2.png


Screenshot_1.png
 
Konu Sahibi
Merhaba,
Kodlamaya göre döngüyü oluşturulan sayfaya göre yapmalısınız.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

yerine ;

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.

gibi olmalıdır.
Koddaki sıkıntıyı buldum.
1- bitis = CLng(DateValue(Date + 6 - xlFilterThisWeek)) kodundaki - xlFilterThisWeek ifadesi 3 günlük periyodu baz alıyordu - xlFilterThisWeek ifadesini silince +6 günü baz aldı.

2-Poliçeler sayfamdan 'Range("A1:X45").Select ifadesi ile sadece 45.satıra kadar ki verileri kopyalayıp kriterlere uyanları muayenetarihleri sayfasına kopyalıyordu. Dolayısıyla 45.satırdan sonra kriterlere uyan veriler gözükmüyor.
last row.png
'Range("A1:X45").Select kodunu
x sütunundaki mevcut dolu son satırı bulup X45 yerine koda aşağıdaki gibi ekledim fakat hata verdi. Bu kodu nasıl revize etmeliyim ki A1 ile X sütununun son dolu satırını Range'e parametre olarak verebileyim.

sonSatir = sayfaPoliceler.Cells(Rows.Count, "X").End(3).row
Range("A1", sonSatir).Select





HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Koddaki sıkıntıyı buldum.
1- bitis = CLng(DateValue(Date + 6 - xlFilterThisWeek)) kodundaki - xlFilterThisWeek ifadesi 3 günlük periyodu baz alıyordu - xlFilterThisWeek ifadesini silince +6 günü baz aldı.

2-Poliçeler sayfamdan 'Range("A1:X45").Select ifadesi ile sadece 45.satıra kadar ki verileri kopyalayıp kriterlere uyanları muayenetarihleri sayfasına kopyalıyordu. Dolayısıyla 45.satırdan sonra kriterlere uyan veriler gözükmüyor.
Ekli dosyayı görüntüle 8675
'Range("A1:X45").Select kodunu
x sütunundaki mevcut dolu son satırı bulup X45 yerine koda aşağıdaki gibi ekledim fakat hata verdi. Bu kodu nasıl revize etmeliyim ki A1 ile X sütununun son dolu satırını Range'e parametre olarak verebileyim.

sonSatir = sayfaPoliceler.Cells(Rows.Count, "X").End(3).row
Range("A1", sonSatir).Select





HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
 
Konu Sahibi
HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
@işsiz hocam sıkıntı şu sürekli veri girilecek poliçeler sayfasına yani Range("A1:X45").Select kodundaki A1:X45 aralığının dinamik olması gerekiyor. Çünkü son satır sürekli değişecek sürekli veri giriliyor. Kod sadece 45.satıra kadar olan verileri alıp filtreleyip sayfa3 e yazdırıyor fakat yeni girilen datalar poliçe tablosuna 45.satırdan sonraya yazılıyor. Dolayısıyla filtenin kapsamı dışında kalıyor. Benim a1 sütunu ile x sütunundaki son dolu satıra kadar olan alandaki verileri çekip sayfa 3 e aktarmam lazım.
 
"...yani Range("A1:X45").Select kodundaki A1:X45 aralığının dinamik olması gerekiyor..."

Dosyanızı indirdim ama ilk bakışta düzenini kavrayamadım.
Ne nerden nasıl geliyor, oluyor, bitiyor anlamış değilim.
Akşam bakarım. Aşağıdaki kodu bir deneyin.

Range("A1:X" & Cells(Rows.Count, "A").End(3).Row ).Select
 
Sayın OğuzTürkyılmaz
Deneme amaçlı 1 sayfa ekledim.
Policeler sayfasındaki verilerin bir kopyasını oraya aldım.
Policeler sayfasına deneme amaçlı bir buton ekledim.
İstenen buysa deneme amaçlı olan herşeyi silin.
MuayeneTarihiHatirlat makrosu ile butondaki kodlar aynı.
Yalnız anlamdığım şu: Bu kodlar açılış kodları.
Ama sayfa3 de herhangi bir silme işlemi yok. Yazmamışsınız. Dikkatinize.
Kolay gelsin.
 
Konu Sahibi
Sayın OğuzTürkyılmaz
Deneme amaçlı 1 sayfa ekledim.
Policeler sayfasındaki verilerin bir kopyasını oraya aldım.
Policeler sayfasına deneme amaçlı bir buton ekledim.
İstenen buysa deneme amaçlı olan herşeyi silin.
MuayeneTarihiHatirlat makrosu ile butondaki kodlar aynı.
Yalnız anlamdığım şu: Bu kodlar açılış kodları.
Ama sayfa3 de herhangi bir silme işlemi yok. Yazmamışsınız. Dikkatinize.
Kolay gelsin.
Sn excelcan öncelikle ilgilendiğiniz için teşekkür ederim.

HTML:
Kod:
İçeriği görebilmek için Giriş yap ya da Üye ol.
Bu kod ihtiyacım olan Poliçeler tablosundaki son satırı bulup seçme işlevini yerine getirdi çok teşekkür ederim. Lakin kodun devamında başlangıç ve bitiş tarihleri kod sayfasında debug yaptığımda 44716 ve 44723 olarak gözükse de, poliçeler sayfasından, Muayene tarihleri sayfasına aktarılan filtrelenmiş verilerde muayene tarihi 09.06.2022 olan son kayıtlardaki plakalar yer almamakta. Oysa bu tarih başlangıç ve bitiş tarihleri kriterinin içinde yer alıyor. Bunun nedeni konusunda koda bir göz atmanızı rica ederim.

Not : İşleyiş şöyle Excel kitabı açıldığında Poliçeler sayfasındaki verilerin tamamı seçiliyor. kitabın açıldığı tarih ve gelecek 7 günü kapsayan başlangıç ve bitiş tarihleri içinde yer alan kayıtlar muayene tarihleri sayfasına aktarılıyor sonra plaka ve muayene tarihleri mükerrer olanlar tekrar 'Selection.RemoveDuplicates Columns:=5, Header:=xlYes' koduyla süzgecden geçirilerek listede 1 kayıta indirgeniyor. Muayene tarihleri sayfasında fitre edilmiş bilgilerin silinmesine gerek yok çünkü kitap her açılışında bu sayfa yenileniyor verilerin silinmesine gerek kalmıyor. Verilerin orda kalmasında da bir sakınca yok.
 
Sayın OğuzTürkyılmaz 23.sütuna aldığınız tarih formatları sorunlu görünüyor.
Muhtemelen buraya kayıt gönderirken o kodlarda format sıkıntısı var.
23. sütunu yeniden düzenledim. Döngüyle yeniden formatladım.
Süzme işlemini 25. sütuna aldım.

İkinci bir husus
Policeler sayfasındaki verileriniz Tablo2 de kayıtlı.
Biz sayfa işlemi yaparken Excel Tablo2 ye göre davranıyor.
Örneğin 60 satırlık bir tablo kaydınız var. 10 satır sildiğimizde
Tabloyu yeniden boyutlandırmadığımız için Excel tabloyu 60 satırlık
bir veri kitlesi olarak algılamaya devam eder. Tablonuzdan 10 kayıt silin
sonra Ad kutusundan tablo ismini seçin boş kayıtların da seçili olduğunu göreceksiniz.
sat diye bir son satır değişkeni tanımlayın.
sat = Cells(Rows.Count, "A").End(3).row
MsgBox (sat)
Aynı işlemi tekrar deneyin.
Farkı bunda da göreceksiniz. Yeniden boyutlandırmadığınız sürece eski satır sayısını verecektir.
Bu husus karışıklığa müsait bir konu. Burada tolere edilebilir hata payı nedir doğrusu
bir bilgim yok.

Üçüncü bir husus sayfalar arası işlemler yapıyorsanız mutlaka bu sayfaları değişkenlere atayın
öyle işlem yapın. Select, Activate gibi komutları ne kadar az kullanırsanız
o kadar verim alırsınız. Kafanız da karışmaz. Hata kontrolu kolay olur vs.
 
Çözüm
Konu Sahibi
Sn.@excelcan ilginiz ve yardımlarınız için tekrar teşekkürler. Sizin sayfaya aktarılan kodlarda format sorunu var uyarınızdan sonra

Sayfaya kaydetme için oluşturulan dizinin kodlamasında
SabitDz(23) = DateValue(TextBox_MuayeneBitisTarihi) şeklinde değişiklik yaptım. Bu şekilde hücreye yazdığı verilerde artık sıkıntı yaşanmadan muayene bitiş süresi dolan tüm araçlar tarihleriyle birlikte listeleniyor. Yardımlarınız için tekrar teşekkürler.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst