3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
前幾天同學問我會不會巨集,我先跟他說會,但其實我不知道是什麼,哈哈。於是我就上網查了了一下。 Excel的巨集可以錄製動作,讓電腦幫你做一些重複的事情。但很多重複的事情不太可能錄得出來,所以微軟提供了一個語言:VBA,讓我們可以直接將動作分解一個一個,並從中做修改。 哦~我懂了!就是用程式語言控制Excel來執行動作嘛! 剛好我有學過一點java,所以接下來就來研究看看。 題目 同學是要我幫他做一個Excel檔,三欄為一種顏色,然後要1000欄。 先想一下要怎麼做 透過錄製巨集,我可以直接取得執行畫底色動作的程式碼,不用自己寫。因為要做1000欄,所以我需要用到迴圈。因為要顏色不斷變化,所以我需要用到亂碼,剩下的就見招拆招。 程式碼 Sub 巨集1()     For i = 1 To 1000     Rows(([A2]) & ":" & ([A2] + 2)).Select     With Selection.Interior         .Pattern = xlSolid         .PatternColorIndex = xlAutomatic         .Color = RGB(255 * Rnd(), 255 * Rnd(), 255 * Rnd())         .TintAndShade = 0         .PatternTintAndShade = 0     End With     [A2] = [A2] + 3     i = i + 1     Next i End Sub   程式碼解析 1)欄位選取 Rows(([A2]) & ":" & ([A2] + 2)).Select Rows是欄的物件,格式是Rows(數字 : 數字),作用是選取範圍 Ex:Rows(1:3)就是選1~3欄 執行選取動作(.Select) ***這裡有一個小插曲,本來我隨便設一個變數i,想要直接放入Rows裡面,但這個物件好像只接受儲存格的屬性,所以我就放一個[A2]的儲存格,沒想到真的可以*** 2)執行動作(畫底色)    With Selection.Interior         .Pattern = xlSolid         .PatternColorIndex = xlAutomatic         .Color = RGB(255 * Rnd(), 255 * Rnd(), 255 * Rnd())         .TintAndShade = 0         .PatternTintAndShade = 0 End With VBA的動作會用With~End With包起來 .Color = RGB(255 * Rnd(), 255 * Rnd(), 255 * Rnd()) .Color顏色,用RGB三原色物件(數字 , 數字 , 數字) Rnd()是亂數(0<=1),因為色碼是0~255,所以我就乘上255。,得到我要的範圍。亂數放在顏色後面,就會有顏色一直換的效果。 3)重複畫底色(寫迴圈)  For i = 1 To 1000 ~~~~~~~~~  [A2] = [A2] + 3     i = i + 1     Next i For i = 1 To 1000,這個迴圈缺點是我要先知道我要跑幾次。 [A2] = [A2] + 3     i = i + 1     Next i 每次動作執行完,[A2]+3 → 下三欄儲存格 i = i+1 Next i 執行下一次迴圈。 效果 根據以上的思路和程式碼撰寫,最後就變成同學要的這個樣子: 看起來超像彩色千層蛋糕 結語 這是我第一次寫VBA,雖然有達到我要的效果,但總覺得漏洞百出XD 不得不說,學完一個新的語言之後,學其他的就會比較快,而且時間久了,真的會體悟到程式設計的邏輯與魅力,很多時候都讓我大吃一驚,也讓我由衷佩服軟體工程師的腦袋。 完成程式的時候,總有很大的成就感,不枉費自己花很多錢和心力在學習程式上。做為一個非本科生,能學多少算多少,主要還是希望可以訓練自己的邏輯思維,以及解決事情的能力。 這次因為同學所引發的契機,讓我知道還有VBA可以玩XD過一陣子比較閒之後,我再來慢慢研究,並將心得放上來。

本文由elsa02232492pixnetnetblog提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦