資源描述:
《VBA制作進度條》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、無標題欄窗體進度條目標:制作一個無標題欄窗體形式的進度條。要求:當進度條到達顯示的數(shù)值后,數(shù)值設置為白色,否則數(shù)值設置為藍色。步驟:1.創(chuàng)建用戶窗體創(chuàng)建一個excel工作簿,進入VBA編輯環(huán)境,在當前工程中添加一個用戶窗體UserForm1。設置窗體的Height、Width屬性分別為38和241,ShowModal屬性為False。2.添加文字框TextBox1在窗體上添加一個文字框TextBox1,作為進度條的白色背景。設置其Height、Width、Left、Top屬性分別為18、220、8和8,TabStop屬性為False,Text屬性為空白。背景顏色BackColor屬性用默認的
2、“白色”,BackSyle屬性用默認的1(不透明),SpecialEffect屬性用默認的2(凹下)。3.添加文字框TextBox2在窗體上添加一個文字框TextBox2,用來顯示進度條的百分比。設置其Height、Width、Left、Top屬性分別為18、40、98和12,TabStop屬性為False,TextAlign屬性為2(水平居中),文字顏色為藍色,BackSyle設置為0(透明),SpecialEffect屬性設置為0(平面)。4.添加標簽Label1在窗體中添加一個標簽Label1,作為進度條。設置其Height、Width、Left、Top屬性分別為18、0、8和8,Ca
3、ption屬性為空白,BackColor屬性為“藍色”。5.聲明API函數(shù)和常量在窗體的快捷菜單中選擇“查看代碼”,用下列語句聲明API函數(shù)和常量:PrivateDeclareFunctionDrawMenuBarLib"user32"(ByValhwndAsLong)AsLongPrivateDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"_(ByValhwndAsLong,ByValnIndexAsLong)AsLongPrivateDeclareFunctionSetWindowLongLib"user32"Ali
4、as"SetWindowLongA"_(ByValhwndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLongPrivateDeclareFunctionFindWindowLib"user32"Alias"FindWindowA"_(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLongPrivateConstGWL_STYLEAsLong=(-16)PrivateConstWS_CAPTIONAsLong=&HC000006.編寫窗體的初始化代碼在用戶窗體的初始化事件中編寫如下
5、代碼,隱藏該窗體的標題欄:PrivateSubUserForm_Initialize()IfVal(Application.Version)<9Thenhwnd=FindWindow("ThunderXFrame",Me.Caption)Elsehwnd=FindWindow("ThunderDFrame",Me.Caption)EndIfIStyle=GetWindowLong(hwnd,GWL_STYLE)IStyle=IStyleAndNotWS_CAPTIONSetWindowLonghwnd,GWL_STYLE,IStyleDrawMenuBarhwndEndSub1.編寫子程序j
6、d為了在窗體中顯示進度條和完成的百分比,我們在模塊中建立一個子程序jd,代碼如下:Subjd(h,lr)'h表示當前次數(shù),lr表示總次數(shù)UserForm1.Label1.Width=Int(h/lr*220)'顯示進度條IfUserForm1.Label1.Width>105Then'進度到達顯示數(shù)值UserForm1.TextBox2.ForeColor=&HFFFFFF'數(shù)值設置為白色ElseUserForm1.TextBox2.ForeColor=&HFF0000'數(shù)值設置為藍色EndIfpct=Int(h/lr*100)'進度值pct=IIf(pct<10,""&pct&"%",pc
7、t&"%")'顯示進度值UserForm1.TextBox2.Text=pctEndSub2.測試進度條為了測試這個無標題欄窗體進度條,我們在模塊中再建立一個子程序“進度條”,代碼如下:Sub進度條()UserForm1.Show'顯示用戶窗體cnt=10000'循環(huán)次數(shù)控制Form=1TocntCalljd(m,cnt)DoEvents'轉(zhuǎn)讓控制權給操作系統(tǒng)NextUnloadUserForm1'卸載用戶窗