Geri Git   ForumSinsi - 2006 Yılından Beri > Bilgisayar,Teknoloji & İnternet Dünyası > Program Anlatımları [Resim & Video]

Yeni Konu Gönder Yanıtla
 
Konu Araçları
excelde, gösterme, işlemi, kalan, nesnesi, objesi, progressbar, süre, yaparken

Excel'de Progressbar Nesnesi / Bir İşlemi Yaparken Kalan Süre Gösterme Objesi

Eski 08-11-2012   #1
Prof. Dr. Sinsi
Varsayılan

Excel'de Progressbar Nesnesi / Bir İşlemi Yaparken Kalan Süre Gösterme Objesi



ProgressBar Nesnesi / Bir İşlemi Yaparken Kalan Süre Gösterme Objesi

Bir işlem yapılırken kalan sürenin ne kadar olduğunu gösteren görsel bir objedir Bunun yanında bu zamanı yüzde değeri ile de göstermek mümkündür

ProgresBar VBA’nın Toolbox penceresinin kontrolünde standart olarak bulunmaz Bunu eklemek için Additional Controls penceresinden Microsoft ProgressBar’ın en son versiyonunu işaretleyin


Şekil-1: Microsoft ProgressBar’ı eklemek

Daha sonra bir tane UserForm ekleyin ve UserForm’un üzerine bir tane ProgressBar bir tane de CommandButton çizin (Şekil-2)


Şekil-2: UserFormu’n görüntüsü

Formun initialize olayına ProgressBar’ın maksimum ve minimum değerlerini şu kodu yazarak girelim

Private Sub UserForm_Initialize()
ProgressBar1Max = 1000
ProgressBar1Min = 1
End Sub

CommandButton’nun click olayına da şu kodları yazalım

Private Sub CommandButton1_Click()
Dim i As Integer

For i = 1 To 1000
ProgressBar1Value = i
Next i
End Sub

Kodları çalıştırın ve bir deneyin


İLİŞKİLER

ProgresBarValue
ProgresBarMax

Burada şunu belirtmek isterim ProgressBar’ın maksimum değeri ile ProgressBar’ın valuesinin son sayısına eşit olduğunu görüyorsunuz Genelde bir işlemin ne kadar süreceği %100 şeklinde gösterildiğinden ProgressBar’ın maksimum değeri genel olarak 100 belirlenir Bu şekilde olursa ProgressBar’ın value'sinin son değerini 100’e tamamlamak gerekir

Küçük bir örnek verip açıklamaya çalışırsak

ProgressBarmax = ProgressBarvalue

ProgresBarmax=100 olursa ProgressBarvalue= ? kaç olmalıdır İşte burada i döngüsünün son sayısını kaça bölmek gerekir ki sonuç ProgressBar’ın maksimum değerine eşit olsun aranır Sonuç 10’dur Ve ProgressBar’ın değeri ProgressBarvalue=i/10 olur Bunu sürekli hesaplamaktansa bu değeri standart hale getirip yazacak olursak sonuç şu şekilde olur

ProgressBarvalue=(i/i döngüsünün son değeri)*ProgressBar’ın maksimum değeri yani;

ProgressBarvalue=(i/1000)*100

ProgressBar’ın valuesi ile ProgressBar’ın maksimum değeri arasındaki ilişkiyi anladıysak kodları değiştirin ve tekrar çalıştırın Ekrana şu hata mesajını alacaksınız (Şekil 3)


Şekil-3: ProgressBar minimum değer hatası

ProgressBar’ın Minimum değeri ile Döngünün Son Değeri ilişkisi

Şimdide ProgressBar’ın minimum değeri ile ilgili hata mesajını aldık Çünkü ProgressBar’ın değerinin her artışı (i/1000)*100=0,1 dir Oysaki bizim ProgressBar’ın minimum değeri 1 dir Burada yapacağınız tek şey var ya maksimum değeri artırarak yada minimum değeri düşürerek minimum değer ile maksimum değerin çarpımını döngünün son sayısına eşitlemek Buradan şu sonuç çıkıyor ProgressBar’ın minimum değeri ile ProgressBar’ın maksimum değerinin çarpımı döngünün son sayısına eşit olmak zorunda Yukarıda genellikle maksimum değer için 100 kullanıldığı için minimum değeri düşürelim Kaç yazmamız gerekir 100’ü 1000’e bölersek sonuç 0,1 olur Buda ProgressBar’ın minimum değerine eşittir

Sayısal Olarak Artışı Görmek

Artışı sayısal bir değer yani %100 cinsinden görmek için birkaç değişik yöntem mevcut Frame’nin Caption’u yada Label’in Caption’u kullanabiliriz Biz Label’i kullanalım ve Userform’un üzerine bir Label çizelim Döngünün içerisine şu kodu ekleyelim ve makroyu çalıştıralım

Label1Caption = (i / 1000) * 100

Dikkat ettiyseniz ProgressBar ilerlemiş fakat Label’in değeri artmamıştır Sadece en sonda 100 değerini vermiştir Aslında değer arttı fakat UserForm yenilenmediğinden bunu bize göstermedi Bunun için ise Next i satırından bir önceki satıra DoEvents yazalım ve bir daha makroyu çalıştıralım Hala bir eksiklik var değil mi? Hatta iki eksiklik var Birincisi yüzdelik değer tam sayı değil İkincisi % işareti yok Bunların yapılması da çok basit Tam sayıyı int kodu ile yüzdelik değeri de format ile halledeceğiz

Label1Caption = Format(Int((i / 1000) * 100), "%0")

İşte şimdi oldu artık yaptığımız işi hem sayısal hem de görsel olarak göreceğiz En son ki kod eklememizden sonra tüm kodlarımız şu şekilde oldu

Private Sub CommandButton1_Click()
Dim i As Integer

For i = 1 To 1000
ProgressBar1Value = (i / 1000) * 100
Label1Caption = Format(Int((i / 1000) * 100), "%0")
DoEvents
Next i
End Sub

Private Sub UserForm_Initialize()
ProgressBar1Max = 100
ProgressBar1Min = 01
End Sub

Kaynak

Alıntı Yaparak Cevapla
 
Üye olmanıza kesinlikle gerek yok !

Konuya yorum yazmak için sadece buraya tıklayınız.

Bu sitede 1 günde 10.000 kişiye sesinizi duyurma fırsatınız var.

IP adresleri kayıt altında tutulmaktadır. Aşağılama, hakaret, küfür vb. kötü içerikli mesaj yazan şahıslar IP adreslerinden tespit edilerek haklarında suç duyurusunda bulunulabilir.

« Önceki Konu   |   Sonraki Konu »


forumsinsi.com
Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ForumSinsi.com hakkında yapılacak tüm şikayetlerde ilgili adresimizle iletişime geçilmesi halinde kanunlar ve yönetmelikler çerçevesinde en geç 1 (Bir) Hafta içerisinde gereken işlemler yapılacaktır. İletişime geçmek için buraya tıklayınız.