Excel中實(shí)現(xiàn)的動(dòng)態(tài)模擬時(shí)鐘圖表,超級(jí)逼真,不要懷疑你的眼睛!
廢話少說,先看效果圖:
Excel中實(shí)現(xiàn)的動(dòng)態(tài)模擬時(shí)鐘
模擬時(shí)鐘是一個(gè)有四個(gè)數(shù)據(jù)系列的XY散點(diǎn)圖;
需要使用VBA讓時(shí)鐘走起來;
它使用OnTime方法更新圖表的每一秒;
1、插入散點(diǎn)圖制作模擬時(shí)鐘;
秒針:="SecondHand"
分針:="MinuteHand"
時(shí)針:="HourHand"
表盤數(shù)字:="ClockNumbers"
插入散點(diǎn)圖制作模擬時(shí)鐘
2、編寫VBA代碼:
在開發(fā)工具--visual basic---模塊1中寫入如下代碼:
模塊1
在Thisworkbook中寫入如下代碼:在工作簿打開時(shí)自己運(yùn)行時(shí)鐘,當(dāng)關(guān)閉工作簿時(shí)自動(dòng)停止時(shí)鐘;
在Thisworkbook中寫入
3、設(shè)置表盤、指針格式,無(wú)聊時(shí)換換表盤,讓自己換換心情吧!
這個(gè)動(dòng)態(tài)模擬時(shí)鐘圖表難度較大,需要精通散點(diǎn)圖和Excel VBA的知識(shí),如果你能夠做出來,那你一定可以在簡(jiǎn)歷上非常有自信的寫下:“本人精通Excel!”,如果你現(xiàn)在還做不出來,那就不要輕易跟老板說自己精通Excel哦!
關(guān)注我們,讓你每天都能進(jìn)步一點(diǎn)點(diǎn),讓你早日精通Excel哦!
如果你覺得本文對(duì)你有幫助或啟發(fā),請(qǐng)點(diǎn)贊并分享給更多小伙伴吧!
在這個(gè)程序中,我們?cè)O(shè)計(jì)了一個(gè)模擬時(shí)鐘,使用c編程語(yǔ)言中的圖形來告訴系統(tǒng)時(shí)鐘的當(dāng)前時(shí)間。
我們通過包括頭文件“stdio.h”“conio.h”“dos.h”“graphics.h”和“process.h”來啟動(dòng)代碼。
期待和大家一起交流學(xué)習(xí) 尋找和體驗(yàn)編程的魅力(群號(hào):233026065)
在開始,我們將做三個(gè)功能,即: -
· “calculatehrs(int h)”
· “calculatemin(int m)”
· “changehrs(int m,int a)”
在第一函數(shù)中,小時(shí)的值由形式參數(shù)接收,然后檢查并且滿足其滿足的任何情況,并且x存儲(chǔ)其必須指向時(shí)鐘的特定角度的值。例如
12345678910111213 | intcalculatehrs(inth){intx;switch(h){case0: x=90;break;case1:case13: x=60;break;case2:case14: x=30;break;case3:case15: x=0; |
第二函數(shù),分鐘的值由形式參數(shù)接收,然后檢查,并且滿足“x”的任何情況被分配一些值,但是在這種情況下,分鐘首先除以5.例如
12345678910111213 | intcalculatemin(intm){intx;if(m%5==0){switch(m){case0: x=90;break;case5: x=60;break;case10: x=30;break;case15: x=360;break;case20: x=330; |
它的代碼與小時(shí)的代碼相同,因?yàn)樗鼧?biāo)記分鐘是5,10,15,20等,所以它是在1,2,3到12。
如果它不是5的倍數(shù),則再次檢查它是否大于0并小于15,然后根據(jù)圖形屏幕為x分配值。
1234567 | if(m>0&&m<15){switch(m){case1: x=84;break;case2: x=78;break;case3: x=72;break;case4: x=66;break; |
此過程遵循3次以上以找到分鐘是否在“0-15”,“15-30”,“30-45”或“45-60”之間,并且返回“x”,其保存某個(gè)角度,它必須指向與第一功能相同的時(shí)鐘。
第三功能是改變時(shí)針的位置,以給予時(shí)鐘一個(gè)活潑的外觀,因?yàn)樗奈恢酶淖內(nèi)危绻昼娫?5-30,30-45,45-60之間。
12345678 | intchangehrs(intm,inta){if(m>15&&m<=30)a-=12;if(m>30&&m<=45)a-=18;if(m>45&&m<60)a-=24;return(a);} |
現(xiàn)在主代碼在我們輸入主函數(shù)時(shí)開始,“struct time t”用于獲取系統(tǒng)上的當(dāng)前時(shí)間,然后將其存儲(chǔ)在h,m,s中。
1234567 | structtimet;intgd=DETECT,gm,h,m,s,a,b,c,i,j,k;initgraph(&gd,&gm,"C:\TC\BGI");gettime(&t);h=t.ti_hour;m=t.ti_min;s=t.ti_sec; |
并且在接收到時(shí)間之后,所有樹功能被調(diào)用以根據(jù)當(dāng)前時(shí)間設(shè)置小時(shí)和分針的角度。
如果三個(gè)循環(huán)被一個(gè)接一個(gè)地初始化,第一個(gè)為小時(shí),第二個(gè)為分鐘,第三個(gè)循環(huán)為秒。使用圓圈創(chuàng)建時(shí)鐘,每個(gè)小時(shí)用小圓圈標(biāo)記點(diǎn)。
12345678910 | for(i=a;i>0;i-=6)for(j=b;j>0;j-=6)for(k=c;k>0;k-=6){outtextxy(190,20,"Analog Clock");circle(300,200,102);circle(300,200,100);outtextxy(385,185,"3");outtextxy(288,110,"12");outtextxy(207,185,"9");outtextxy(295,290,"6"); |
Pieslice函數(shù)用于表示小時(shí),分鐘和秒針,而不是使用線函數(shù),因?yàn)樗菀妆硎尽?/p>
123 | pieslice(300,200,i-1,i,75);pieslice(300,200,j-1,j,85);pieslice(300,200,k-1,k,95); |
它的語(yǔ)法是
pieslice(X,Y,起始角度,終止角度,半徑);
重復(fù)整個(gè)過程,直到用戶按任何鍵。
程序真的很簡(jiǎn)單,你只需要了解基本的模擬時(shí)鐘,并將時(shí)鐘分成360度角,并計(jì)算小時(shí),分鐘和秒的所有角度。
.
.
.
.
這是今天的內(nèi)容,有問題的地方大家可以指出。
如果對(duì)編程方面有興趣的可以加群:233026065,大家一起學(xué)習(xí)交流。
群內(nèi)還有許多學(xué)習(xí)資料、視頻,免費(fèi)課......