VBA如何更新會計期間 - 會計
By Bethany
at 2017-01-22T07:43
at 2017-01-22T07:43
Table of Contents
VBA如何更新會計期間
網誌圖文版:
http://www.b88104069.com/archives/4158
一般公認會計原則有個期間假設。我一直記得大學初會教授這麼介紹:一家
公司到底賺不賺錢、賺了多少,只有等到結束營業關門大吉才能最終確定,
可是投資者和債權人等不及了,所以在會計上要切成期間:每個月、每季度
、每年度。很多會計特有的專業術語,例如固資折舊、收入認列、費用配合
,都是圍繞著如何分開期間而來。而在會計人的工作,也因為這樣基本上設
定為以月為周期,周而復始地以每月結帳為基調,常常每個月結完帳,一大
堆管理報表要先更新期間,在此介紹如何以VBA更新會計期間:
一、產品別毛利彙總表,有這個月和上個月的資料,方便比較。此報表每個
月都要編製,格式相同,到了下個月,最原始作法,是複製上個月檔案,手
工將期間從「1602」改成「1603」、將「1601」改成「1602」。
二、上個步驟更新期間需要改六個儲存格,聰明一點的想法,是引用同一來
源更新。例如新建一個「參數」工作表,設計好會計期間的填寫表格。
三、將報表表頭連結到「參數」工作表,如此一來,每個月只要更新兩個參
數,報表期間就更新好了,從六個儲存格減到兩個儲存格。
四、類似這樣的情況,Excel專業作法是「名稱」。把上方功能區移到「公
式」頁籤,選擇「名稱管理員」,在跳出來的視窗「新增」。
五、「編輯名稱」視窗,看起來一目瞭然,新增一個叫「本期期間」的名稱
,其內容參照到「=參數!$B$1」。
六、於資料編輯列直接輸入名稱,Excel自動帶出名稱內容。
七、編寫程式:「Names.Add Name:="本期期間A", RefersTo:="1604"」是
很標準的VBA語法,「Names」是操作對象,「Add」是操作方法,中間以「.
」隔開,後面「Name:=」和「 RefersTo:=」是關於此次操作的屬性。順
帶一提VBA都是用半形符號,我文章為了編排版面,特地改成全形。「
ActiveWorkbook.Names.Add Name:="本期期間B", RefersTo:="=參數!$B$1"
」的說明如同程式裡的附註:「'於目前工作簿新增名稱」,應該不難理解
。「Current = InputBox("請輸入本期期間", "會計期間") 」這裡用到了
VBA特有的函數「InputBox」,兩個參數用法在下一步驟會很清楚。
八、執行上一個步驟的「輸入會計期間」巨集,最後會跳出輸入視窗,這裡
可以很清楚兩個參數的作用,一個是視窗標題列的內容、一個是輸入提示的
內容。
九、執行完巨集,再叫出「名稱管理員」,成功建立好了會計期間的名稱。
如果原來有報表期間有設定好使用「本期期間C」和「上期期間C」,在輸入
完InputBox對話方塊,會很神奇看到報表自動更新了會計期間。
InputBox是VBA特有的函數,它如同Excel裡面的IF函數一樣,結構簡單但是
很實用。IF提供了公式計算中的邏輯判斷,InputBox則是讓Excel輸入方式
不再侷限於儲存格,透過對話方塊視窗和名稱,等於是自行設計類似於一般
應用程式的輸入界面,這是VBA主要功能之一。不過InputBox還是有先天限
制,只能輸入文字型資料,而且一次只能輸入一個,在某些情況並不適用,
必須有另外的方法,留待以後再介紹。
延伸閱讀:
VBA如何整理程式代碼
http://www.b88104069.com/archives/4157
VBA如何批次刪除空白列
http://www.b88104069.com/archives/4153
VBA如何控制表單輸入防止錯誤
http://www.b88104069.com/archives/4152
--
周末,我們繼續Excel:精華區=>21.心得=>5.其他=>3.office
會計人的Excel小教室: https://www.facebook.com/acctexcel
--
Tags:
會計
All Comments
Related Posts
會計問題-公司債發行價格
By Agnes
at 2017-01-21T22:19
at 2017-01-21T22:19
會計問題-計算普通股加權平均股數
By Edward Lewis
at 2017-01-21T21:56
at 2017-01-21T21:56
請問在建工程
By Mason
at 2017-01-21T21:56
at 2017-01-21T21:56
書單健檢
By Jack
at 2017-01-21T18:42
at 2017-01-21T18:42
會計問題
By Oliver
at 2017-01-21T17:59
at 2017-01-21T17:59