ProgressBar - Makro Bitene Kadar Çalışsın

İlerleme çubuğu

Cevap: ProgressBar yardımı

İleti#1)  Tarkan VURAL » 07 Eyl 2012 00:22

İşlemin nereden başlayıp ne kadar süre harcayacağı belli olmadığından çok güzel bir şey çıkmayacak. Biraz uyduruk oldu [upp] ama görsel olarak işinizi görür herhalde. [ilginc]
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 20:27
Konum: tarkan@excelvba.net
Meslek: LUU, Yazılım Geliştirme Müdürü
Yaş: 45
İleti: 26838
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: ProgressBar - Makro Bitene Kadar Çalışsın

İleti#2)  Tarkan VURAL » 07 Eyl 2012 23:38

Ara ara makrolarda bir değer veriyorsunuz. Başlangıcı 1 bitişi 100 olan bir mesafe düşünün. Belirli mesafelerde belirli sınırlar veriyorsunuz. Dedim ya bu örnek biraz uydurma oldu. Tam verimi aslında şu mantıkta alırsınız:

Bir listeniz var ve listede 10.000 satır veri var. For döngüsü ile her satırı konrol ettirip herhangi bir işlem yaptıracaksınız. Başlangıç değerini 1 alırsınız. Progresin bitiş değerini de 100 alın. 100 / 10.000 = 0,01. Demek ki her döngüde progresbarın vvalue değerine 0,01 ekleyeceğiz ki 10.000 satırı bulduğunda, progresimiz de 100'ü bulsun. Aynı şeyi 3500 olarak düşünün. 100 / 3500 = 0,028.. , Her döngüde progres değerine 0,028 eklerseniz, işleminiz 3500 üncü satırda bittiğinde progres değeri 100ü bulacak ve ilerleme çubuğu da dolmuş olacak. Sizdeki gibi karışık işlemlerde süre hesaplamalarını yapamayacağımızdan, belirli arallıklarda belirli değerler gönderiyoruz ve progresin ilerleme çubuğunu doldurmaya çalışıyoruz. Örnek dosya vereyim, deneyin, anlayacaksınız.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 20:27
Konum: tarkan@excelvba.net
Meslek: LUU, Yazılım Geliştirme Müdürü
Yaş: 45
İleti: 26838
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: ProgressBar - Makro Bitene Kadar Çalışsın

İleti#3)  Tarkan VURAL » 08 Eyl 2012 00:15

Call komutları makro çağırmak için. Aslında ben onları özellikle tek bir prosedürde toparladım. O ana prosedür bir kitap, diğer call ile yönlendirdiğim prosedürler bir nevi kitap sayfaları gibi, makro kodları da sayfadaki satırlar gibidir. Bu şekilde düşünmeye çalışın.
İlk makro çalıştığında git şu makrodakileri işle demiş olduk. O iş bittiğinde ikinci sıradaki makroyu bulup işle sonra diğeri vs.. Siz daha önce her prosedürün sonuna eklemişsiniz, ben ise tek prosedürde topladım. Hepsini tek prosedür altında da toplayabilirdik ama çok uzun bir prosedür olurdu. Kafanız karışmasın. Bahsettiğim 3 yol da aynıdır.

1 - Tek prosedürde tüm makroları arka arkaya çalıştırırız.
2 - Prosedürleri böleriz ve her prosedür sonunda, sonraki çalışacak prosedürü çağırırız.
3 - Prosedürleri böleriz ve ana bir prosedür belirleyerek, çalışacak diğer prosedürleri burada basamaklarız.

Gelelim aradaki progressbar value değerlerine. Dedim ya , işlemlerin zamanını hesaplayamadığımızdan, belirli aralıklarda progressbar değerini manuel yolluyorum. Tek prosedür olduğunu varsayarsak, belirli işlemlerin arasına yine progressbar değeri gönderecektik. Bu değer nedir ? Bu değer sizin ilerleme rengini görebileceğiniz değerdir. Bir çubuğu 10 parçaya bölmüş olsaydık, her 10 parçasını soldan sağa tek tek boyamak isteseydik, boyamaya devam ettikçe çubuğun yavaş yavaş renk değiştirdiğini görebilirdik. Bu işlemi de ona benzetin. Aralarda işlemleriniz devam ettikçe, progressbar ilerleme çubuğu da yavaş yavaş ilerliyor.

Aslında yapılması gereken işlem şu olmalı :
Tüm prosedürlerinizin çalışabileceği zaman / süre öncesinden hesaplanmalı. Aynı bir download yaparken bağlantı hızınızın kaç kb' lık paketlerde dosya indirebileceğini sistemin hesapladığı gibi. Orada nasıl oluyor ? Download edilecek dosyanın boyutu 100mb ve bağlantı hızınıza göre saniyede 150kb veri paketi alıyorsunuz. Önce cinsleri birleştirelim. 100mb = 100 X 1024Kb = 102.400kb. O da saniyede 150kb indirdiğimiz düşünüldüğünde 150kb' ye bölünürse, 102.400 / 150kb = 682,66 saniye. Onu da dakika cinsine bölelim. 682,66 / 60 ~11dakika. Şimdi elimizde 11 dakikada indirebileceğimiz (download edebileceğimiz) bir dosya var. Bunun için progressbar yapmalıyız. 11 / 100 = 0,11 dakika/birim. Progressbar max değerini yine %100 olarak düşünürsek, her progressbar değerinde 0,11 dakika eşitlenmiş olacak. Dolayısıyla 1 ile 100 arasındaki bir döngüyü başlatıp, 0,11 dakika sürelerinde birer birer arttırım yaparsak, 11.nci dakikada 100mb ' lık veri paketine ulaşmış oluruz. Bu da işlemin başlangıç anında progresbar değerinin 0 ya da 1, bitiş zamanında da progressbar değerinin 100 olmasına vesile olacak.

Bilmiyorum yeteri kadar örnekleyebildim mi :)
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ? O halde BAĞIŞ butonunu tıklayın...
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 20:27
Konum: tarkan@excelvba.net
Meslek: LUU, Yazılım Geliştirme Müdürü
Yaş: 45
İleti: 26838
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü


Forum ProgressBar

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

cron
Bumerang - Yazarkafe