Progressbar

hakanbent

Altın Üye
Katılım
31 Ağustos 2006
Mesajlar
37
Excel Vers. ve Dili
excel 11- türkçe
Altın Üyelik Bitiş Tarihi
29-09-2027
Sayın hocalarım ve forum arkadaşlarım;

Excel'de öğrenmek ve uygulama geliştirme amaçlı olarak, adres defteri yapıyorum. Tabi VBA'yı daha tam olarak öğrenemediğim için bazı sorunlar ile karşılaşıyorum.

Sorum ise;

İki adet Userformum var. İlk Userformumda programı tanıtıcı bir yazı var. Programın güzel gözükmesi için altına bir tane progressbar koydum (Sanki program yükleniyormuş gibi gözüksün diye...). Progress bar dolduğunda userform2'ye geçsin istiyorum. Biraz komik kodlar yazdım.

Userform1'in kod bölümüne yazdığım kodlar.
Private Sub UserForm_Activate()
Dim i, j, asal As Boolean
ProgressBar1.Min = 0
ProgressBar1.Max = 100
For i = 0 To 100
ProgressBar1.Value = i
If ProgressBar1.Value = 100 Then
UserForm2.Show
UserForm1.Enabled = False
Exit Sub
End If
Next i
End Sub

Module yazdığım kodlar
Private Sub auto_open()
Application.Visible = False
UserForm1.Show
End Sub

Ancak bu kodlarda; progressbar çubuğu ilerlemiyor, iki tane açılan formda kapanmak bilmiyor:). İstediğim. Progressbar çubuğu sona geldiğinde otomatik olarak userform2'ye geçsin ve Userform1 kapansın. Yardımlarınız için şimdiden teşekkür ederim.
Not: Bu program bitesiye kadar sevgili hocalarımın biraz başını ağırtacağım:).

En derin saygı ve muhabetlerimle
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki kodu userform1 in kod sayfasına kopyalayın.

Kod:
Private Sub UserForm_Activate()
ProgressBar1.Min = 0
ProgressBar1.Max = 10000
For i = 0 To 10000
DoEvents
ProgressBar1 = i
Next
UserForm2.Show
End Sub
Aşağıdaki koduda userform2 ye kopyalayın.

Kod:
Private Sub UserForm_Initialize()
Unload UserForm1
End Sub
 

hakanbent

Altın Üye
Katılım
31 Ağustos 2006
Mesajlar
37
Excel Vers. ve Dili
excel 11- türkçe
Altın Üyelik Bitiş Tarihi
29-09-2027
Sayın LeventM hocam;

Kodlar süper çalışıyor elinize emeğinize sağlık. Sayın hocam gönderdiğiniz kodlarda bir de sorum olacak "DoEvents" ve ""Private Sub UserForm_Initialize()" kodlarının görevleri nelerdir. Bunları açıklarsanız çok sevinirim.

En derin saygı ve muhabetlerimle.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Döngülerde işlem hızı çok yüksek olduğundan işlemin sonucu ekrana yansımaz, bu sebeple doevents komutu kullanılarak sonucun ekrana yansıması sağlanır. Başka bir açıklaması varsa lütfen bilen üyelerimiz gerekli ilaveyi yapsınlar.

Userform_initialize de userformun aktif olmadan önce istenilen kodların çalıştırılmasını sağlayan olayıdır. Özellikle combobox veya listbox gibi nesnelere veri yüklenecekse gerekli kodlar bu olaya (event) yazılırki userform açıldığında yüklemeler tamamlanmış olsun.

Örneğin yukarıdaki kodda önce userform2 görünmeden önce userform1 kapatılır.

Elbette bu olaya çok yüklü kodlar yazılması userformun açılmasını geciktirecektir.
 

hakanbent

Altın Üye
Katılım
31 Ağustos 2006
Mesajlar
37
Excel Vers. ve Dili
excel 11- türkçe
Altın Üyelik Bitiş Tarihi
29-09-2027
Teşekkür

Sayın LeventM Hocam;

İlginiz ve açıklamalarınız için çok teşekkür ederim. İyiki varsınız:icelim:

En derin saygı ve muhabetlerimle.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,349
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
"DoEvents" in en önemli yanı döngü devam ederken diğer olay ya da prosedürün çalışmasına olanak tanır.
 
Üst