搜尋此網誌

2018年10月30日 星期二

[VBA]大小編號自動編碼

[VBA]大小編號自動編碼

[VBA]大小編號自動編碼

有時候編號會有階層,大階層編號+小階層編號如何判斷編號的起終點是最關鍵的地方EXCEL_2018-10-29_11-37-27

步驟

自動編號的部分分為兩個部分來做,首先先將大項(1)、(2)……自動編碼,然後再針對(1)、(2)與(2)、(3)……之間的小項目編碼。

大項目編碼

針對大項目編碼可以參考項次編碼的方式來處理,但這次的設定上有括號,所以增加了NumberFormatLocal來定義儲存格格式。

接著就可以利用大項目編碼作為小項目的執行邊界。

小項目編碼

小項目介於大項目編碼與大項目編碼之間,所以利用這個特性抓取迴圈的起終點,例如在(1)、(2)與(2)、(3)……等大項目之間的小項目從1開始自動編號,基於此可利用兩個if來判斷。因為大項目的排列由小而大,利用這個特性採用下列判斷式抓取起終點。

利用上述方程式可以得到起點prs及終點pre分別代表的列數,之後就能做迴圈來自動編碼小項目

當迴圈執行到最後一行,通常是小項目的最後一行,沒辦法透過大項目定位終點的行數,所以這邊單獨拿出來再寫一個

 

自動調整PPT總頁數

自動調整PPT總頁數

自動調整PPT總頁數

微軟的Power Point是沒有「總頁數」這個功能選項,所以只能用VBA將調整簡化。

步驟說明

打開開發人員頁簽

進入母片檢視

在母片裡面插入標籤

點擊左鍵2次進入VBA編輯模式,並且輸入程式碼

修飾

利用內建的性質修飾標籤改成想要呈現的樣式

顯示頁碼

最後依照「你的頁碼為什麼顯示不出來?教你破解PPT裏的“達芬奇頁碼”」說明設置頁碼後即可,呈現頁數/總頁數的效果。

限制

這個方式仍然需要手動執行VBA才會自動更改,但還是可以減少手動修正的出錯機率。另使用這個方式設定的總頁數無法透過對齊指令排序,不太方便。

 

2018年10月23日 星期二

[VBA]項次編號

[VBA]項次編號

[VBA]自動項次編號

編碼需求

工作的時候需要對於工項編碼,但是工項不是連續的所以沒辦法一次往下拉自動填入完成,這個時候就是用DO迴圈來做就很方便。

程式碼說明

  1. xc1不一定要從1開始,因為最上列通常為表格標題或說明,但就算設成1也不會有影響。
  2. 利用項目的性質判斷是否編碼,要編碼的工項有對齊向左非空白這兩種性質,所以利用.HorizontalAlignment = xlLeft<> ""來作為判斷式。
  3. 假設以上條件成立,則位置(xc1,1)的值為xc2,編碼起始值為1。成功填寫之後要記得讓xc2+1,數列才會變成1、2、3……,如果+2會變成1、3、5、7……以此類推,不一定要整數,小數也是可以。
  4. Do迴圈沒有預設前進的值,也就是說如果沒寫xc1 = xc1 + 1這行,xc1永遠不會變成r,就會造成無限迴圈的情況,一般判斷行列數都建議使用for迴圈比較方便。