[摘 要] 本文以固定資產折舊計算模型設計為實例,探討如何利用Excel內嵌的VBA程序設計功能解決會計核算與管理中的有關問題,讓財務人員了解更多處理會計數據的方法,而不是僅僅局限于財務軟件。
[關鍵詞] Excel;VBA;固定資產折舊;模型
[中圖分類號]F232[文獻標識碼]A[文章編號]1673-0194(2008)16-0030-02
隨著會計電算化的不斷普及,我國企業解決會計核算問題大多是利用財務軟件進行。利用財務軟件解決會計核算問題應該說既簡單又方便,但也有其一定的局限性:第一,由于企業的業務種類繁多,有時會出現財務軟件解決不了的問題;第二,由于電算化軟件的功能有限,也使其不能完全滿足企業管理的需要。隨著計算機應用的不斷普及與深入以及財務人員素質的不斷提高,筆者一直在思考,應該讓財務人員了解更多的處理會計數據的工具,而不應僅僅局限于財務軟件。只有這樣,在工作中遇到問題時,思路才會廣,解決的辦法才會多,工作效率才會高。下面以固定資產折舊計算模型設計為實例來說明如何利用Excel的VBA程序設計功能解決會計核算與管理中的問題。
一、設計固定資產折舊計算的基本模型
為了使設計的模型具有通用性,在設計基本模型時要考慮能夠根據需要隨時改變基礎數據和折舊方法,同時通過計算產生的折舊計算表的表名要隨折舊方法的改變而自動改變。在Excel的sheet 1工作表中建立如圖1所示的基本模型。

圖中的數據除“計算”按鈕和折舊方法右側的“組合框”控件、第7行的折舊計算表名稱外,其他數據和表格都是通過鍵盤輸入和定義單元格格式設置。其中的“計算”按鈕和組合框通過鼠標右鍵單擊“工具欄”選擇“窗體”,在彈出的“窗體”工具條中選擇相應工具按鈕建立。在建好的“組合框”控件上單擊鼠標右鍵選擇“設置控件格式”,在彈出的“設置控件格式”對話框中的“數據源區域”框中輸入“$E$3:$E$5”(待選擇的3種折舊方法),在“單元格鏈接”框中輸入“$F$2”,在A7單元格中輸入公式“=IF(F2=1,E3,IF(F2=2,E4,E5))\"折舊計算表\"”。
二、為“計算”按鈕指定宏并對宏進行定義
在建好的“計算”按鈕上單擊鼠標右鍵選擇“指定宏”,在彈出的“指定宏”對話框中的宏名框中輸入“計算折舊”,再單擊右邊的“新建”按鈕,在彈出的模塊1中輸入以下代碼:
Sub 計算折舊()
' hexuewu 記錄的宏 2007-10-21
'清空工作表指定區域
Sheets(\"sheet1\"). Select
Rows(\"9:65536\"). Select
Selection.Delete
' 改變計算范圍的顏色
rang = \"A9:f \" + Trim(Str(Val(Range(\"C4\").Value) + 8))
Range(rang). Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
'將固定資產基本數據賦值給變量
cost = Cells(3, 3)'固定資產原值
life = Cells(4, 3)'預計使用年限
salvage = Cells(5, 3) '預計殘值
rang1 = \"$E$9:E\" + Trim(Str(Val(Range(\"C4\").Value) + 6))
Dim a As Integer
'填寫計算表中第1~3列數據
For a = 1 To life
Cells(8 + a, 1).Value = a
Cells(8 + a, 2).Value = life - a + 1
Cells(8 + a, 3).Value = cost - salvage
Next
'填寫計算表中第4~6列數據
For a = 1 To life
rang2 = \"A\" + Trim(Str(Val(8 + a)))
rang3 = \"B\" + Trim(Str(Val(8 + a)))
rang4 = \"$A$\" + Trim(Str(Val(life + 9)))
'定義折舊率計算公式
zjl = \"=IF($F$2=1,1/$c$4,if($F$2=2,\" + rang3 + \"/sum($a$9:\" + rang4 + \"),IF($c$4-\" + rang2 + \">=2,2/$C$4,)))\"
Cells(8 + a, 4).Value = zjl'公式賦值到表中第4列
'定義折舊額計算公式
zje = \"=IF($F$2=1,SLN($C$3,$C$5,$C$4),IF($F$2=2,SYD($C$3,$C$5,$C$4,\" + rang2 + \"),\" + \"IF($c$4-\" + rang2 + \">=2,DDB($C$3,$C$5,$C$4,\" + rang2 + \",2),SLN($C$3-SUM(\" +rang1 + \"),$C$5,2))))\"
Cells(8 + a, 5).Value = zje'公式賦值到表中第5列
'定義累計折舊計算公式
ljzj = \"=IF(\" + rang2 + \"=1,\" + \"E\" + Trim(Str(Val(8 + a))) + \",F\" + Trim(Str(Val(7 + a))) + \"+\" + \"E\" + Trim(Str(Val(8 + a))) + \")\"
Cells(8 + a, 6).Value = ljzj'公式賦值到表中第6列
' 給計算范圍畫邊框線
For b = 1 To 6
With Cells(8 + a, b)
.Borders.LineStyle = xlContinuous
End With
Next
Next
End Sub
本程序的核心技術是如何定義表中的“年折舊率”、“年折舊額”和“累計折舊”的計算公式,因為這些計算公式要隨折舊年份、預計使用年限和折舊方法的改變而自動改變。因此代碼中定義了循環結構,調用了Excel的內嵌函數IF()以及折舊計算函數SLN()、SYD()和DDB(),且設置了較多的中間變量,如:rang1~rang4,同時還要考慮采用“雙倍余額遞減法”計算折舊時,最后兩年應改為直線折舊即“平均年限法”。另一個難點是計算表格的表格線區域要隨“預計使用年限”的改變而自動改變,此處是在循環結構中通過再嵌套循環解決。
三、模型的使用
此設計模型具有很強的通用性,并且操作簡單,當用戶需要進行折舊計算時,只要在基本數據區輸入相關數值,然后單擊“計算”按鈕,模型可以自動計算出表中采用當前折舊方法的折舊數據,計算結果如圖2所示。用戶還可以單擊“組合框”中的下拉列表按鈕選擇其他折舊方法,折舊計算表會自動計算出當前選定的折舊方法的折舊數據,便于用戶進行數據的對比,這在進行固定資產投資決策分析和固定資產審計時十分有用。

主要參考文獻
[1] 李政 等. VBA應用基礎及實例教程[M]. 北京:國防工業出版社,2005.
[2] 韓良智. Excel在財務管理與分析中的應用[M]. 北京:中國水利水電出版社,2004.
[3] 何學武. Excel在工資核算與管理中的應用[J]. 職業圈,2007(4).
[4] 沈旭輝 等. 中文Visual Basic 6. 0實用教程[M]. 成都:電子科技大學出版社,1999.