Excel'de kullanıcı formuyla ilerleme çubuğunu görüntüleme

Özet

Tamamlanması uzun süren bir Microsoft Visual Basic for Applications makronuz varsa, kullanıcıya makronun doğru ilerlediğini gösteren bir gösterge vermek isteyebilirsiniz. Bu makalede, Microsoft Excel'de kullanıcı formuyla ilerleme çubuğu oluşturma açıklanmaktadır.

Daha Fazla Bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna zımni garantiler, satılabilirlik veya belirli bir amaca uygunluk da dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğini açıklamaya yardımcı olabilir. Ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmeyeceklerdir.

Kullanıcı Formu Oluşturma

Aşağıdaki örnekte, Visual Basic alt yordamları geniş bir hücre aralığını rastgele bir sayıyla doldurur. Gösterge, makronun doğru çalıştığını gösterir.

  1. Excel'de yeni bir çalışma kitabı açın.

  2. Microsoft Office Excel 2003'te ve Excel'in önceki sürümlerinde Araçlar'a tıklayın, Makro'nun üzerine gelin ve Visual Basic Düzenleyicisi'ne tıklayın.

    Microsoft Office Excel 2007'de, Geliştirici sekmesinin Kod grubunda Visual Basic'e tıklayın.

    Not Şeritte Geliştirici sekmesini görüntülemek için şu adımları izleyin:

    1. Excel 2007'yi başlatın, Microsoft Office Düğmesi'ne ve ardından Excel Seçenekleri'ne tıklayın.
    2. Excel Seçenekleri iletişim kutusunda Popüler'e tıklayın ve ardından Şeritte Geliştirici sekmesini göster onay kutusunu seçmek için tıklayın.
  3. Ekle menüsünde Kullanıcı Formu'na tıklayın.

  4. Kullanıcı formunda bir Etiket denetimi çizin.

  5. Etiket denetiminin aşağıdaki özelliklerini aşağıdaki değerlerle değiştirin: | Özellik| Değer| |---------------|-----------------------------| | Resim yazısı| Şimdi güncelleştiriliyor. Lütfen bekleyin...| NotÖzellikler penceresi görünmüyorsa, Görünüm menüsünde Özellikler Penceresi'ne tıklayın.

  6. Kullanıcı formunda çerçeve denetimi çizin.

  7. Çerçeve denetiminin aşağıdaki özelliklerini aşağıdaki değerlerle değiştirin: | Özellik | Değer| |---------|--------------------| | FrameProgress adını verin|

  8. Çerçeve denetiminde bir Etiket denetimi çizin.

  9. Etiket denetiminin aşağıdaki özelliklerini aşağıdaki değerlerle değiştirin: | Özellik| Değer| |----------|---------------------------| | Ad | LabelProgress| | BackColor |& H000000FF&| | SpecialEffect |fmSpecialEffectRaised|

Makro Kodunu Yazın

  1. Kullanıcı formunun Kod penceresini açmak için kullanıcı formuna çift tıklayın.

  2. Modülde, UserForm_Activate olayı için aşağıdaki kodu yazın:

    Private Sub UserForm_Activate()
        ' Set the width of the progress bar to 0.
        UserForm1.LabelProgress.Width = 0
    
    ' Call the main subroutine.
        Call Main
    End Sub
    
    
  3. Ekle menüsünde, Modül'e tıklayın.

  4. Modülün Kod penceresinde aşağıdaki kodu yazın:

    Sub ShowUserForm()
        UserForm1.Show
    End Sub
    
    Sub Main()
        Dim Counter As Integer
        Dim RowMax As Integer, ColMax As Integer
        Dim r As Integer, c As Integer
        Dim PctDone As Single
    
    Application.ScreenUpdating = False
        ' Initialize variables.
        Counter = 1
        RowMax = 100
        ColMax = 25
    
    ' Loop through cells.
        For r = 1 To RowMax
            For c = 1 To ColMax
                'Put a random number in a cell
                Cells(r, c) = Int(Rnd * 1000)
                Counter = Counter + 1
            Next c
    
    ' Update the percentage completed.
            PctDone = Counter / (RowMax * ColMax)
    
    ' Call subroutine that updates the progress bar.
            UpdateProgressBar PctDone
        Next r
        ' The task is finished, so unload the UserForm.
        Unload UserForm1
    End Sub
    
    Sub UpdateProgressBar(PctDone As Single)
        With UserForm1
    
    ' Update the Caption property of the Frame control.
            .FrameProgress.Caption = Format(PctDone, "0%")
    
    ' Widen the Label control.
            .LabelProgress.Width = PctDone * _
                (.FrameProgress.Width - 10)
        End With
    
    ' The DoEvents allows the UserForm to update.
        DoEvents
    End Sub
    
    
  5. Excel'e dönün.

  6. Excel 2003'te ve Excel'in önceki sürümlerinde, Araçlar menüsünde Makro'nun üzerine gelin ve Makrolar'a tıklayın.

    Excel 2007'de, Geliştirici sekmesinin Kod grubunda Makrolar'a tıklayın.

  7. Makro iletişim kutusunda, ShowUserForm'u seçmek için tıklayın ve ardından Çalıştır'a tıklayın.

Kırmızı ilerleme çubuğu içeren bir iletişim kutusu görüntülenir. Ana alt yordam çalışma sayfasındaki hücreleri doldururken ilerleme çubuğu artar.

ShowUserForm alt yordamda kullanıcı formu gösterilir. Kullanıcı formunun Activate olayına eklenen yordam Main alt yordamını çağırır. Ana alt yordam hücreleri rastgele sayılarla doldurur. Ayrıca, alt yordam, kullanıcı formundaki Etiket denetimini güncelleştiren UpdateProgressBar alt yordamını çağırır.

Not Bu tekniği kullandığınızda, makronuzun hedeflenen görevleri tamamlaması biraz daha uzun sürer.