文章編號: 211736 - 上次校閱: 2012年2月1日 - 版次: 1.0

如何在 Excel 中顯示進度列,利用使用者表單

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
這份文件的 Microsoft Excel 97 版本,請參閱 170782? (http://support.microsoft.com/kb/170782/ ) .

文件觀念提出者: John Walkenbach

在此頁中

全部展開 | 全部摺疊

結論

如果您有需要長時間才能完成的巨集的 Microsoft Visual Basic for Applications 時,您可以提供使用者巨集正確地進行的指示。本文將告訴您如何利用使用者表單,Microsoft Excel 中建立一個進度列。

其他相關資訊

Microsoft 會提供程式設計範例僅供說明,不做任何明示或默示的保證。這包括但不限於適售性或適合某特定用途之默示擔保。本文假設您已相當熟悉使用的我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能。不過,它們不會修改這些範例以提供附加功能或建構程序來滿足您特定需求。

建立使用者表單

在下列範例中,Visual Basic 副程式填入大範圍以隨機的數字的儲存格。指示器會告訴您執行該巨集正確。
  1. 在 Excel 中開啟新的活頁簿。
  2. 在 Microsoft Office Excel 2003 和舊版 Excel 中,按一下 工具指向 巨集然後按一下 Visual Basic 編輯器.

    在 [Microsoft Office Excel 2007 中,按一下 Visual Basic程式碼 群組上 開發人員 索引標籤。

    附註 若要顯示 開發人員 在功能區索引標籤上,請依照下列步驟執行:
    1. 啟動 Excel 2007 中,按一下 Microsoft Office 按鈕然後按一下 Excel 選項.
    2. Excel 選項 對話方塊中,按一下 受歡迎然後按一下以選取 在功能區顯示 [開發人員] 索引標籤 核取方塊。
  3. 在上 插入 功能表中,按一下 自訂表單.
  4. 繪製 標籤 控制在使用者表單。
  5. 變更下列屬性 標籤 若要控制下列值:
       Property        Value
       --------------------------------------------
       Caption         Now updating. Please wait...
    					
    附註 如果 屬性 視窗沒有顯示出來,請按一下 屬性] 視窗 在上 檢視 功能表。
  6. 繪製 框架 控制在使用者表單。
  7. 變更下列屬性 框架 若要控制下列值:
        
       Property        Value
       -----------------------------
       Name            FrameProgress
    					
  8. 繪製 標籤 在控制 框架 控制項。
  9. 變更下列屬性 標籤 若要控制下列值:
        Property        Value
        -------------------------------------
        Name            LabelProgress
        BackColor       &H000000FF&
        SpecialEffect   fmSpecialEffectRaised
    					

輸入巨集程式碼

  1. 連按兩下以開啟 [使用者表單 程式碼 使用者表單] 視窗。
  2. 在模組中,輸入下列程式碼 UserForm_Activate 事件:
    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. 在上 插入 功能表中,按一下 模組.
  4. 程式碼 單元中的視窗中輸入下列程式碼:
    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。
  6. 在 Excel 2003 和舊版 Excel 中,指向 巨集 在上 工具 功能表,然後再按一下 巨集.

    在 Excel 2007 中,按一下 巨集程式碼 群組上 開發人員 索引標籤。
  7. 巨集 對話方塊中,按一下以選取 ShowUserForm然後按一下 執行.
有紅色進度列的對話方塊隨即出現。進度列會隨[ 主要 副程式填入工作表上的儲存格。

[ ShowUserForm 副常式會顯示在使用者表單。附加至該程序 啟動 使用者的表單呼叫的事件 主要 副常式。[ 主要 副程式填入隨機數字的儲存格。此外,副程式呼叫 UpdateProgressBar 副常式會更新 標籤 控制在使用者表單。

附註 當您使用這項技術時,巨集將會只是較長的時間才能完成其預定的工作。

這篇文章中的資訊適用於:
  • Microsoft Office Excel 2007
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2010
關鍵字:?
kbinfo kbexpertisebeginner kbcode kbhowto kbmacro kbmt KB211736 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:211736? (http://support.microsoft.com/kb/211736/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。