浅谈VBA在集团型企业资产集中管理中的应用
2020-10-27钱永江
钱永江
[摘 要] 企业在实际经营过程中,对于价值较高的重要资产必须加强监管。企业一般通过购入管理软件(OA)作为管理工具实现监管目标。但外购软件往往与企业实际期望存在较大出入,而且存在二次开发费用及日常维护费用较高的现实问题。文章应用Excel VBA语言,开发一款与企业实际契合度较高、人机交互的资产管理台账,不但能最大限度地节约公司经费,而且能满足公司日常管理需要,实时更新管理功能。
[关键词] 资产集中管理;台账;VBA;EXCEL函数
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2020. 15. 035
[中图分类号] F234 [文献标识码] A [文章編号] 1673 - 0194(2020)15- 0080- 03
0 前 言
集团公司财务人员在日常工作中,需要经常登记一些集团OA或财务系统无法记载的信息,比如登记集团公司下的定期存单的台账(所属子公司、存单号、存入信息、到期日、支取信息等),集团公司租赁房产的租赁台账,集团公司下贷款信息台账等。在这些极具个性化的资产(负债)管理活动中,如直接应用软件开发服务商提供管理软件,不仅不够经济,而且后续提升改良频繁。如仅用Excel登记,其修改的随意性较大且无过程痕迹,安全性不佳。笔者在实际工作中,通过编制VBA程序,定制相关资产的管理台账。既提高财务人员的资产(负债)管理能力,又能以最经济的方式提高办公效率。
通常在Office-Excel的工作簿里自带VBA工作环境,本文以Excel 2007版本为基础,通过举例介绍集团金融资产集中管理台账的部分控件及代码,实现相关信息的保存、查询、修改与打印功能。
1 金融资产集中管理台账设计思路与功能要求
1.1 设计思路
一般需要通过辅助台账登记相关信息的金融资产包括定期存单、承兑汇票等。本文仅以定期存单为例,介绍构建此类金融资产管理台账的思路、所需的功能控件及其代码。
构建思路:通过新增(支取)凭单的方式实现对金融资产的管理,一个系统编号对应一份定期存单,实现对存单的存取、查询管理及打印功能。系统编号具有唯一性,以计算机系统日期(8位)+(C 或Z)+后缀序号形式编码。其中C表示存入,Z表示支取。1.2 金融资产管理台账的功能要求
具备金融资产信息录入、存储、修改、查询、提取等功能;实现查询信息的汇总功能;查询过程中,具备基本的人机交互功能;实现查询表单的打印功能。
在同一工作簿下建立两个工作表:一个前台工作表用于登记、修改及查询功能;另一个后台工作表用于存放数据(为避免随意修改本后台数据,本表宜深度隐藏,visible=2)。
输入的简易界面如图1所示。
查询具有某一共性信息的报表界面如图2所示。
2 主要功能控件的代码
2.1 “新增”功能控件代码
新增功能控件主要是实现所录入的金融资产信息的存储功能,代码如下:
Private Sub CommandButton1_Click()
Dim j%, i%, x%
j = Sheet1.[a65536].End(xlUp).Row
x = Sheet3.[a65536].End(xlUp).Row
Sheet1.[c2] = "存入存单登记!"
If MsgBox("确定保存?", vbOKCancel) = 1 Then
For i = 4 To j
If Left(Sheet3.Cells(x, 2).Value, 8) = Format(Now, "yyyymmdd") Then
Sheet1.Cells(i, 7) = Left(Sheet3.Cells(x, 2).Value, 8) & "C" & Format(Right(Sheet3.Cells(x, 2).Value, 2) + 1, "00")
Else
Sheet1.Cells(i, 7) = Format(Now, "yyyymmdd") & "C01"
End If
For k = 1 To 6
Sheet3.Cells(x + 1, 1) = Sheet1.[B2]
Sheet3.Cells(x + 1, 2) = Sheet1.Cells(i, 7)
Sheet3.Cells(x + 1, k + 2) = Sheet1.Cells(i, k)
Next k
x = x + 1
Next i
Sheet1.Cells(j + 1, 1) = "合计:"
Sheet1.Cells(j + 1, 3) = WorksheetFunction.Sum(Sheet1.Range("c4:c" & j))
If MsgBox("已保存" & j - 3 & "条记录!" & Chr(13) & "是否新增新的记录?", vbOKCancel) = 1 Then
Sheet1.Range("b2:f2,A4:g" & j + 1).ClearContents