MALICIOUS
156
Risk Score
Malware Insights
MITRE ATT&CK
T1059.005 Visual Basic
T1566.001 Spearphishing Attachment
The file is identified as malicious by ClamAV with the signature Xls.Trojan.Laroux-32. It contains VBA macros, specifically a Workbook_Open event, which is designed to create a custom menu titled '债务审计' (Debt Audit). This menu contains options like '插入新行' (Insert New Row) and '检查数据' (Check Data), which are likely pretexts to execute further malicious actions or to trick the user into interacting with the malicious functionality. The presence of these macros and the specific detection name strongly suggest a macro-based trojan.
Heuristics 4
-
ClamAV: Xls.Trojan.Laroux-32 critical CLAMAV_DETECTIONClamAV detected this file as malware: Xls.Trojan.Laroux-32
-
VBA macros detected medium 2 related findings OLE_VBA_MACROSDocument contains VBA macro code
-
Workbook_Open macro low OLE_VBA_WBOPENWorkbook_Open macroMatched line in script
Private Sub Workbook_Open() -
Auto_Open macro low OLE_VBA_AUTOAuto_Open macroMatched line in script
Sub auto_open()
Extracted artifacts 1
Files carved from inside the sample during analysis.
| Filename | Kind | Source | Size |
|---|---|---|---|
macros.bas |
vba-macro | oletools.olevba.extract_macros (decoded VBA source) | 67784 bytes |
SHA-256: c7bbd3351cce0edae50726904c409363f242d7077403402948876dd5a4276876 |
|||
|
Detection
ClamAV:
Xls.Trojan.Laroux-32
Obfuscation or payload:
unlikely
|
|||
Preview scriptFirst 1,000 lines of the extracted script
Attribute VB_Name = "ThisWorkbook"
Attribute VB_Base = "0{00020819-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Option Explicit
Private Sub Workbook_Open()
Call clearMenu
Dim HelpMenu As CommandBarControl
Dim NewMenu As CommandBarPopup
Dim MenuItem As CommandBarControl
Dim Submenuitem As CommandBarButton
Set HelpMenu = Application.CommandBars(1).FindControl(ID:=30010)
If HelpMenu Is Nothing Then
Set NewMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, temporary:=True)
Else
Set NewMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=HelpMenu.index, temporary:=True)
End If
NewMenu.Caption = "债务审计"
Set MenuItem = NewMenu.Controls.Add(Type:=msoControlButton)
With MenuItem
.Caption = "插入新行"
.FaceId = 162
.OnAction = "InsertRow.ShowInsertRowForm"
End With
Set MenuItem = NewMenu.Controls.Add(Type:=msoControlButton)
With MenuItem
.Caption = "检查数据"
.FaceId = 162
.OnAction = "CheckData.checkData"
End With
Call disableMenu
Call loadProvince
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call clearMenu
End Sub
Private Sub clearMenu()
On Error Resume Next
Application.CommandBars(1).Controls("债务审计").Delete
'Application.CommandBars(1).Controls("插入(&i)").Visible = True
'Application.CommandBars(1).Controls("插入(&i)").Enabled = True
'屏蔽插入行列单元格项
'Application.CommandBars("Row").Controls("插入(&i)").Enabled = True
'Application.CommandBars("Column").Controls("插入(&i)").Enabled = True
'Application.CommandBars("Column").Controls("删除(&D)...").Enabled = True
'Application.CommandBars("Cell").Controls("插入(&i)...").Enabled = True
'Application.CommandBars("Cell").Controls("删除(&D)...").Enabled = True
End Sub
Private Sub disableMenu()
On Error Resume Next
'Application.CommandBars(1).Controls("插入(&i)").Visible = False
'Application.CommandBars(1).Controls("插入(&i)").Enabled = False
'屏蔽插入行列单元格项
'Application.CommandBars("Row").Controls("插入(&i)").Enabled = False
'Application.CommandBars("Column").Controls("插入(&i)").Enabled = False
'Application.CommandBars("Column").Controls("删除(&D)...").Enabled = False
'Application.CommandBars("Cell").Controls("插入(&i)...").Enabled = False
'Application.CommandBars("Cell").Controls("删除(&D)...").Enabled = False
End Sub
Private Sub loadProvince()
On Error Resume Next
Dim startRow As Integer
startRow = Util.getDataStartRowNo
'startRow = 10
Dim endrow As Integer
endrow = Util.getCommentRowNo
Call loadData.loadData
Dim i
'ActiveSheet.Unprotect Password:="zwsjtymm"
For i = startRow To endrow
Dim rangeValue As String
rangeValue = "A" & i
Dim provices As String
provices = loadData.getProvince
With Range(rangeValue).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=provices
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
Next i
'ActiveSheet.Protect Password:="zwsjtymm", DrawingObjects:=False, Contents:=True, Scenarios:= _
' False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
' AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:= _
' True
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Call loadProvince
End Sub
Attribute VB_Name = "InsertRowForm"
Attribute VB_Base = "0{A9BF5EA3-7437-401C-B838-2C0A656DE41B}{14DC9674-1547-4316-A084-DDBF96A276BC}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Private Sub Cancel_Click()
Me.Hide
End Sub
Private Sub confirm_Click()
If Me.TextBox1.value <> "" Then
'控制输入值
If Not IsNumeric(Me.TextBox1.value) Then
MsgBox "请输入数字"
Exit Sub
End If
Dim Row As Integer
Row = CInt(Me.TextBox1.value)
'ActiveSheet.Unprotect Password:="zwsjtymm"
insertRow.insertRow Row
'ActiveSheet.Protect Password:="zwsjtymm", DrawingObjects:=False, Contents:=True, Scenarios:= _
' False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
' AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:= _
' True
Else
MsgBox "请输入行数"
Exit Sub
End If
Me.Hide
End Sub
Private Sub UserForm_Initialize()
Me.TextBox1.value = "1"
End Sub
Attribute VB_Name = "Column"
Attribute VB_Base = "0{FCFB3D2A-A0FA-1068-A738-08002B3371B5}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = False
Option Explicit
Public m_index As String 'index
Public m_label As String '列汉字名
Public m_checkfuc As String '需要做的检查函数
Public m_dataType As String '数据类型
Public m_validInputs As Collection '可输入的值的范围
Public m_formula As String '公式
Public Property Get index() As String
index = m_index
End Property
Public Property Let index(value As String)
m_index = value
End Property
Public Property Get label() As String
label = m_label
End Property
Public Property Let label(value As String)
m_label = value
End Property
Public Property Get checkfuc() As String
checkfuc = m_checkfuc
End Property
Public Property Let checkfuc(value As String)
m_checkfuc = value
End Property
Public Property Get dataType() As String
dataType = m_dataType
End Property
Public Property Let dataType(value As String)
m_dataType = value
End Property
Public Property Get validInputs() As Collection
Set validInputs = m_validInputs
End Property
Public Property Let validInputs(value As Collection)
Set m_validInputs = value
End Property
Public Property Get formula() As String
formula = m_formula
End Property
Public Property Let formula(value As String)
m_formula = value
End Property
Attribute VB_Name = "Sheet2"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Attribute VB_Name = "Sheet1"
Attribute VB_Base = "0{00020820-0000-0000-C000-000000000046}"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = True
Attribute VB_TemplateDerived = False
Attribute VB_Customizable = True
Public Function GetTableRow() As Collection
Dim colums As New Collection
Dim temp As String
'省
Dim column_1 As New Column
column_1.index = 1
column_1.label = "省"
column_1.checkfuc = "NotNull"
column_1.dataType = "varchar"
column_1.validInputs = Nothing
column_1.formula = ""
colums.Add column_1
'市
Dim column_2 As New Column
column_2.index = 2
column_2.label = "市"
column_2.checkfuc = "NotNull"
column_2.dataType = "varchar"
column_2.validInputs = Nothing
column_2.formula = ""
colums.Add column_2
'区/县
Dim column_3 As New Column
column_3.index = 3
column_3.label = "县"
column_3.checkfuc = "no"
column_3.dataType = "varchar"
column_3.validInputs = Nothing
column_3.formula = ""
colums.Add column_3
'行政区划级次
Dim column_4 As New Column
column_4.index = 4
column_4.label = "地区级次"
column_4.checkfuc = "NotNull"
column_4.dataType = "varchar"
temp = "省本级,地市本级,县级"
column_4.validInputs = GetSelConnection(temp)
column_4.formula = ""
colums.Add column_4
'学校名称
Dim column_5 As New Column
column_5.index = 5
column_5.label = "学校名称"
column_5.checkfuc = "NotNull"
column_5.dataType = "varchar"
column_5.validInputs = Nothing
column_5.formula = ""
colums.Add column_5
'学校类别
Dim column_6 As New Column
column_6.index = 6
column_6.label = "学校类别"
column_6.checkfuc = "NotNull"
column_6.dataType = "varchar"
temp = "高级中学,完全中学,十二年一贯制学校"
column_6.validInputs = GetSelConnection(temp)
column_6.formula = ""
colums.Add column_6
'是否为示范校
Dim column_7 As New Column
column_7.index = 7
column_7.label = "是否为示范校"
column_7.checkfuc = "NotNull"
column_7.dataType = "varchar"
temp = "省级示范校,地市级示范校,否"
column_7.validInputs = GetSelConnection(temp)
column_7.formula = ""
colums.Add column_7
'城乡类别
Dim column_8 As New Column
column_8.index = 8
column_8.label = "城乡类别"
column_8.checkfuc = "NotNull"
column_8.dataType = "varchar"
temp = "城市,县镇,农村"
column_8.validInputs = GetSelConnection(temp)
column_8.formula = ""
colums.Add column_8
'债务统计表年度
Dim column_9 As New Column
column_9.index = 9
column_9.label = "债务统计表年度"
column_9.checkfuc = "no"
column_9.dataType = "varchar"
temp = "2010年"
column_9.validInputs = GetSelConnection(temp)
column_9.formula = "=""2010年"""
colums.Add column_9
'2010年末高中债务余额(本金)_小计
Dim column_10 As New Column
column_10.index = 10
column_10.label = "2010年末高中债务余额(本金)_小计"
column_10.checkfuc = "no"
column_10.dataType = "currency"
column_10.validInputs = Nothing
column_10.formula = "=RC[1]+RC[2]+RC[3]+RC[4]+RC[5]"
colums.Add column_10
'2010年末高中债务余额(本金)_政府负有偿还责任的债务余额
Dim column_11 As New Column
column_11.index = 11
column_11.label = "2010年末高中债务余额(本金)_政府负有偿还责任的债务余额"
column_11.checkfuc = "no"
column_11.dataType = "currency"
column_11.validInputs = Nothing
column_11.formula = ""
colums.Add column_11
'2010年末高中债务余额(本金)_政府负有担保责任的债务余额
Dim column_12 As New Column
column_12.index = 12
column_12.label = "2010年末高中债务余额(本金)_政府负有担保责任的债务余额"
column_12.checkfuc = "no"
column_12.dataType = "currency"
column_12.validInputs = Nothing
column_12.formula = ""
colums.Add column_12
'2010年末高中债务余额(本金)_其他相关债务余额
Dim column_13 As New Column
column_13.index = 13
column_13.label = "2010年末高中债务余额(本金)_其他相关债务余额"
column_13.checkfuc = "no"
column_13.dataType = "currency"
column_13.validInputs = Nothing
column_13.formula = ""
colums.Add column_13
'2010年末高中债务余额(本金)_集资形成的债务余额
Dim column_14 As New Column
column_14.index = 14
column_14.label = "2010年末高中债务余额(本金)_集资形成的债务余额"
column_14.checkfuc = "no"
column_14.dataType = "currency"
column_14.validInputs = Nothing
column_14.formula = ""
colums.Add column_14
'2010年末高中债务余额(本金)_三类政府性债务之外的拖欠工程款
Dim column_15 As New Column
column_15.index = 15
column_15.label = "2010年末高中债务余额(本金)_三类政府性债务之外的拖欠工程款"
column_15.checkfuc = "no"
column_15.dataType = "currency"
column_15.validInputs = Nothing
column_15.formula = ""
colums.Add column_15
'2010年偿还高中债务本息_小计
Dim column_16 As New Column
column_16.index = 16
column_16.label = "2010年偿还高中债务本息_小计"
column_16.checkfuc = "no"
column_16.dataType = "currency"
column_16.validInputs = Nothing
column_16.formula = "=RC[1]+RC[2]+RC[3]+RC[4]+RC[5]"
colums.Add column_16
'2010年偿还高中债务本息_偿还政府负有偿还责任的债务本息
Dim column_17 As New Column
column_17.index = 17
column_17.label = "2010年偿还高中债务本息_偿还政府负有偿还责任的债务本息"
column_17.checkfuc = "no"
column_17.dataType = "currency"
column_17.validInputs = Nothing
column_17.formula = ""
colums.Add column_17
'2010年偿还高中债务本息_偿还政府负有担保责任的债务本息
Dim column_18 As New Column
column_18.index = 18
column_18.label = "2010年偿还高中债务本息_偿还政府负有担保责任的债务本息"
column_18.checkfuc = "no"
column_18.dataType = "currency"
column_18.validInputs = Nothing
column_18.formula = ""
colums.Add column_18
'2010年偿还高中债务本息_偿还其他相关债务本息
Dim column_19 As New Column
column_19.index = 19
column_19.label = "2010年偿还高中债务本息_偿还其他相关债务本息"
column_19.checkfuc = "no"
column_19.dataType = "currency"
column_19.validInputs = Nothing
column_19.formula = ""
colums.Add column_19
'2010年偿还高中债务本息_偿还集资本息
Dim column_20 As New Column
column_20.index = 20
column_20.label = "2010年偿还高中债务本息_偿还集资本息"
column_20.checkfuc = "no"
column_20.dataType = "currency"
column_20.validInputs = Nothing
column_20.formula = ""
colums.Add column_20
'2010年偿还高中债务本息_偿还三类政府性债务之外的拖欠工程款本息
Dim column_21 As New Column
column_21.index = 21
column_21.label = "2010年偿还高中债务本息_偿还三类政府性债务之外的拖欠工程款本息"
column_21.checkfuc = "no"
column_21.dataType = "currency"
column_21.validInputs = Nothing
column_21.formula = ""
colums.Add column_21
'2010年借新还旧情况_小计
Dim column_22 As New Column
column_22.index = 22
column_22.label = "2010年借新还旧情况_小计"
column_22.checkfuc = "no"
column_22.dataType = "currency"
column_22.validInputs = Nothing
column_22.formula = "=RC[1]+RC[2]+RC[3]+RC[4]+RC[5]"
colums.Add column_22
'2010年借新还旧情况_用当年举借新债偿还政府负有偿还责任的债务本息
Dim column_23 As New Column
column_23.index = 23
column_23.label = "2010年借新还旧情况_用当年举借新债偿还政府负有偿还责任的债务本息"
column_23.checkfuc = "no"
column_23.dataType = "currency"
column_23.validInputs = Nothing
column_23.formula = ""
colums.Add column_23
'2010年借新还旧情况_用当年举借新债偿还政府负有担保责任的债务本息
Dim column_24 As New Column
column_24.index = 24
column_24.label = "2010年借新还旧情况_用当年举借新债偿还政府负有担保责任的债务本息"
column_24.checkfuc = "no"
column_24.dataType = "currency"
column_24.validInputs = Nothing
column_24.formula = ""
colums.Add column_24
'2010年借新还旧情况_用当年举借新债偿还其他相关债务本息
Dim column_25 As New Column
column_25.index = 25
column_25.label = "2010年借新还旧情况_用当年举借新债偿还其他相关债务本息"
column_25.checkfuc = "no"
column_25.dataType = "currency"
column_25.validInputs = Nothing
column_25.formula = ""
colums.Add column_25
'2010年借新还旧情况_用当年举借新债偿还集资本息
Dim column_26 As New Column
column_26.index = 26
column_26.label = "2010年借新还旧情况_用当年举借新债偿还集资本息"
column_26.checkfuc = "no"
column_26.dataType = "currency"
column_26.validInputs = Nothing
column_26.formula = ""
colums.Add column_26
'2010年借新还旧情况_用当年举借新债偿还三类政府性债务之外的拖欠工程款本息
Dim column_27 As New Column
column_27.index = 27
column_27.label = "2010年借新还旧情况_用当年举借新债偿还三类政府性债务之外的拖欠工程款本息"
column_27.checkfuc = "no"
column_27.dataType = "currency"
column_27.validInputs = Nothing
column_27.formula = ""
colums.Add column_27
'借新还旧率
Dim column_28 As New Column
column_28.index = 28
column_28.label = "借新还旧率"
column_28.checkfuc = "no"
column_28.dataType = "currency"
column_28.validInputs = Nothing
column_28.formula = "=IF(RC[-12]=0,,RC[-6]/RC[-12])"
colums.Add column_28
'2010年末逾期债务情况(本金)_小计
Dim column_29 As New Column
column_29.index = 29
column_29.label = "2010年末逾期债务情况(本金)_小计"
column_29.checkfuc = "no"
column_29.dataType = "currency"
column_29.validInputs = Nothing
column_29.formula = "=RC[1]+RC[2]+RC[3]+RC[4]+RC[5]"
colums.Add column_29
'2010年末逾期债务情况(本金)_政府负有偿还责任的债务逾期金额
Dim column_30 As New Column
column_30.index = 30
column_30.label = "2010年末逾期债务情况(本金)_政府负有偿还责任的债务逾期金额"
column_30.checkfuc = "no"
column_30.dataType = "currency"
column_30.validInputs = Nothing
column_30.formula = ""
colums.Add column_30
'2010年末逾期债务情况(本金)_政府负有担保责任的债务逾期金额
Dim column_31 As New Column
column_31.index = 31
column_31.label = "2010年末逾期债务情况(本金)_政府负有担保责任的债务逾期金额"
column_31.checkfuc = "no"
column_31.dataType = "currency"
column_31.validInputs = Nothing
column_31.formula = ""
colums.Add column_31
'2010年末逾期债务情况(本金)_其他相关债务逾期金额
Dim column_32 As New Column
column_32.index = 32
column_32.label = "2010年末逾期债务情况(本金)_其他相关债务逾期金额"
column_32.checkfuc = "no"
column_32.dataType = "currency"
column_32.validInputs = Nothing
column_32.formula = ""
colums.Add column_32
'2010年末逾期债务情况(本金)_集资形成的逾期债务金额
Dim column_33 As New Column
column_33.index = 33
column_33.label = "2010年末逾期债务情况(本金)_集资形成的逾期债务金额"
column_33.checkfuc = "no"
column_33.dataType = "currency"
column_33.validInputs = Nothing
column_33.formula = ""
colums.Add column_33
'2010年末逾期债务情况(本金)_拖欠工程款金额
Dim column_34 As New Column
column_34.index = 34
column_34.label = "2010年末逾期债务情况(本金)_拖欠工程款金额"
column_34.checkfuc = "no"
column_34.dataType = "currency"
column_34.validInputs = Nothing
column_34.formula = ""
colums.Add column_34
'逾期债务率
Dim column_35 As New Column
column_35.index = 35
column_35.label = "逾期债务率"
column_35.checkfuc = "no"
column_35.dataType = "currency"
column_35.validInputs = Nothing
column_35.formula = "=IF(RC[-25]=0,,RC[-6]/RC[-25])"
colums.Add column_35
'2010年末资产合计
Dim column_36 As New Column
column_36.index = 36
column_36.label = "2010年末资产合计"
column_36.checkfuc = "no"
column_36.dataType = "currency"
column_36.validInputs = Nothing
column_36.formula = ""
colums.Add column_36
'2010年末负债合计
Dim column_37 As New Column
column_37.index = 37
column_37.label = "2010年末负债合计"
column_37.checkfuc = "no"
column_37.dataType = "currency"
column_37.validInputs = Nothing
column_37.formula = ""
colums.Add column_37
'2010年末资产负债率
Dim column_38 As New Column
column_38.index = 38
column_38.label = "2010年末资产负债率"
column_38.checkfuc = "no"
column_38.dataType = "currency"
column_38.validInputs = Nothing
column_38.formula = "=IF(RC[-2]=0,,RC[-1]/RC[-2])"
colums.Add column_38
'2010年普通高中(高中部)收支情况_收入_合计
Dim column_39 As New Column
column_39.index = 39
column_39.label = "2010年普通高中(高中部)收支情况_收入_合计"
column_39.checkfuc = "no"
column_39.dataType = "currency"
column_39.validInputs = Nothing
column_39.formula = ""
colums.Add column_39
'2010年普通高中(高中部)收支情况_收入_预算内教育经费_小计
Dim column_40 As New Column
column_40.index = 40
column_40.label = "2010年普通高中(高中部)收支情况_收入_预算内教育经费_小计"
column_40.checkfuc = "no"
column_40.dataType = "currency"
column_40.validInputs = Nothing
column_40.formula = ""
colums.Add column_40
'2010年普通高中(高中部)收支情况_收入_预算内教育经费_教育事业费拨款
Dim column_41 As New Column
column_41.index = 41
column_41.label = "2010年普通高中(高中部)收支情况_收入_预算内教育经费_教育事业费拨款"
column_41.checkfuc = "no"
column_41.dataType = "currency"
column_41.validInputs = Nothing
column_41.formula = ""
colums.Add column_41
'2010年普通高中(高中部)收支情况_收入_预算内教育经费_基本建设拨款
Dim column_42 As New Column
column_42.index = 42
column_42.label = "2010年普通高中(高中部)收支情况_收入_预算内教育经费_基本建设拨款"
column_42.checkfuc = "no"
column_42.dataType = "currency"
column_42.validInputs = Nothing
column_42.formula = ""
colums.Add column_42
'2010年普通高中(高中部)收支情况_收入_预算内教育经费_其他拨款
Dim column_43 As New Column
column_43.index = 43
column_43.label = "2010年普通高中(高中部)收支情况_收入_预算内教育经费_其他拨款"
column_43.checkfuc = "no"
column_43.dataType = "currency"
column_43.validInputs = Nothing
column_43.formula = ""
colums.Add column_43
'2010年普通高中(高中部)收支情况_收入_各级政府征收用于教育的税费
Dim column_44 As New Column
column_44.index = 44
column_44.label = "2010年普通高中(高中部)收支情况_收入_各级政府征收用于教育的税费"
column_44.checkfuc = "no"
column_44.dataType = "currency"
column_44.validInputs = Nothing
column_44.formula = ""
colums.Add column_44
'2010年普通高中(高中部)收支情况_收入_事业收入_小计
Dim column_45 As New Column
column_45.index = 45
column_45.label = "2010年普通高中(高中部)收支情况_收入_事业收入_小计"
column_45.checkfuc = "no"
column_45.dataType = "currency"
column_45.validInputs = Nothing
column_45.formula = ""
colums.Add column_45
'2010年普通高中(高中部)收支情况_收入_事业收入_其中:学杂费
Dim column_46 As New Column
column_46.index = 46
column_46.label = "2010年普通高中(高中部)收支情况_收入_事业收入_其中:学杂费"
column_46.checkfuc = "no"
column_46.dataType = "currency"
column_46.validInputs = Nothing
column_46.formula = ""
colums.Add column_46
'2010年普通高中(高中部)收支情况_收入_其他收入
Dim column_47 As New Column
column_47.index = 47
column_47.label = "2010年普通高中(高中部)收支情况_收入_其他收入"
column_47.checkfuc = "no"
column_47.dataType = "currency"
column_47.validInputs = Nothing
column_47.formula = ""
colums.Add column_47
'2010年普通高中(高中部)收支情况_支出_合计
Dim column_48 As New Column
column_48.index = 48
column_48.label = "2010年普通高中(高中部)收支情况_支出_合计"
column_48.checkfuc = "no"
column_48.dataType = "currency"
column_48.validInputs = Nothing
column_48.formula = ""
colums.Add column_48
'2010年普通高中(高中部)收支情况_支出_事业性经费支出_小计
Dim column_49 As New Column
column_49.index = 49
column_49.label = "2010年普通高中(高中部)收支情况_支出_事业性经费支出_小计"
column_49.checkfuc = "no"
column_49.dataType = "currency"
column_49.validInputs = Nothing
column_49.formula = ""
colums.Add column_49
'2010年普通高中(高中部)收支情况_支出_事业性经费支出_个人部分
Dim column_50 As New Column
column_50.index = 50
column_50.label = "2010年普通高中(高中部)收支情况_支出_事业性经费支出_个人部分"
column_50.checkfuc = "no"
column_50.dataType = "currency"
column_50.validInputs = Nothing
column_50.formula = ""
colums.Add column_50
'2010年普通高中(高中部)收支情况_支出_事业性经费支出_公用部分
Dim column_51 As New Column
column_51.index = 51
column_51.label = "2010年普通高中(高中部)收支情况_支出_事业性经费支出_公用部分"
column_51.checkfuc = "no"
column_51.dataType = "currency"
column_51.validInputs = Nothing
column_51.formula = ""
colums.Add column_51
'2010年普通高中(高中部)收支情况_支出_基本建设支出
Dim column_52 As New Column
column_52.index = 52
column_52.label = "2010年普通高中(高中部)收支情况_支出_基本建设支出"
column_52.checkfuc = "no"
column_52.dataType = "currency"
column_52.validInputs = Nothing
column_52.formula = ""
colums.Add column_52
Set GetTableRow = colums
End Function
Private Function GetSelConnection(inputs As String) As Collection
Dim arr, temp
Dim coll As New Collection
arr = Strings.Split(inputs, ",")
For Each temp In arr
coll.Add temp
Next temp
Set GetSelConnection = coll
End Function
Public Function GetHasFormulaRow() As Collection
Dim coll
Dim temp
Set coll = GetTableRow()
Dim returnColl As New Collection
For Each temp In coll
If temp.formula <> "" Then
returnColl.Add temp
End If
Next temp
Set GetHasFormulaRow = returnColl
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
'符合情况的单元框选择
If Target.Row <= 9 And Target.Column > 3 Then
Exit Sub
End If
'当是数组的时候,是插入行的情况
If IsArray(Target.Value2) Then
Exit Sub
End If
' 表示变化的省
If Target.Column = 1 Then
Dim rangeValue As String
rangeValue = "B" & Target.Row
Call loadData.loadData
Dim citys As String
citys = loadData.getCity(Target.value)
If citys = "" Then
citys = ","
End If
'ActiveSheet.Unprotect Password:="zwsjtymm"
With Range(rangeValue).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=citys
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
'清除市,县,级次填入值
rangeValue = "B" & Target.Row
Range(rangeValue).ClearContents
rangeValue = "C" & Target.Row
Range(rangeValue).ClearContents
rangeValue = "D" & Target.Row
Range(rangeValue).ClearContents
End If
' 表示变化的市
If Target.Column = 2 Then
rangeValue = "C" & Target.Row
Call loadData.loadData
Dim countys As String
Dim province As String
If Target.value = "本级" Then
countys = ""
rangeValue = "D" & Target.Row
Range(rangeValue).value = "省本级"
Else
rangeValue = "A" & Target.Row
province = Range(rangeValue).value
countys = loadData.getCounty(province, Target.value)
End If
If countys = "" Then
countys = ","
End If
rangeValue = "C" & Target.Row
'ActiveSheet.Unprotect Password:="zwsjtymm"
With Range(rangeValue).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=countys
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.IMEMode = xlIMEModeNoControl
.ShowInput = True
.ShowError = True
End With
'清除县,级次填入值
rangeValue = "C" & Target.Row
Range(rangeValue).ClearContents
If Target.value <> "本级" Then
rangeValue = "D" & Target.Row
Range(rangeValue).ClearContents
End If
End If
' 表示变化的县
If Target.Column = 3 Then
Dim City As String
Dim county As String
Dim classes As String
If Target.value = "本级" Then
classes = "地市本级"
Else
Call loadData.loadData
rangeValue = "A" & Target.Row
province = Range(rangeValue).value
rangeValue = "B" & Target.Row
City = Range(rangeValue).value
rangeValue = "C" & Target.Row
county = Range(rangeValue).value
rangeValue = "D" & Target.Row
classes = loadData.getClass(province, City, county)
End If
rangeValue = "D" & Target.Row
Range(rangeValue).value = classes
End If
'ActiveSheet.Protect Password:="zwsjtymm", DrawingObjects:=False, Contents:=True, Scenarios:= _
' False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
' AllowFormattingRows:=True, AllowInsertingRows:=True, AllowDeletingRows:= _
' True
End Sub
Attribute VB_Name = "CheckerForTable_1"
Option Explicit
Sub checkData(sneedOperRow As String, totalMsg As String)
'取得需要做处理的行
Dim needOperRow As New Collection
Set needOperRow = Util.split2Arr(sneedOperRow)
'------------------------------------特殊处理----------------------------------------------
'需要特殊处理的行, 列
Dim tempMsg As String
Dim temp
For Each temp In needOperRow
'校验涉及到的数值列
Dim tmp39 As Currency '2010年普通高中(高中部)收支情况_收入_合计
Dim tmp40 As Currency '2010年普通高中(高中部)收支情况_收入_预算内教育经费_小计
Dim tmp41 As Currency '2010年普通高中(高中部)收支情况_收入_预算内教育经费_教育事业费拨款
Dim tmp42 As Currency '2010年普通高中(高中部)收支情况_收入_预算内教育经费_基本建设拨款
Dim tmp43 As Currency '2010年普通高中(高中部)收支情况_收入_预算内教育经费_其他拨款
Dim tmp44 As Currency '2010年普通高中(高中部)收支情况_收入_各级政府征收用于教育的税费
Dim tmp45 As Currency '2010年普通高中(高中部)收支情况_收入_事业收入_小计
Dim tmp46 As Currency '2010年普通高中(高中部)收支情况_收入_事业收入_其中:学杂费
Dim tmp47 As Currency '2010年普通高中(高中部)收支情况_收入_其他收入
Dim tmp48 As Currency '2010年普通高中(高中部)收支情况_支出_合计
Dim tmp49 As Currency '2010年普通高中(高中部)收支情况_支出_事业性经费支出_小计
Dim tmp50 As Currency '2010年普通高中(高中部)收支情况_支出_事业性经费支出_个人部分
Dim tmp51 As Currency '2010年普通高中(高中部)收支情况_支出_事业性经费支出_公用部分
Dim tmp52 As Currency '2010年普通高中(高中部)收支情况_支出_基本建设支出
tmp39 = 0
tmp40 = 0
tmp41 = 0
tmp42 = 0
tmp43 = 0
tmp44 = 0
tmp45 = 0
tmp46 = 0
tmp47 = 0
tmp48 = 0
tmp49 = 0
tmp50 = 0
tmp51 = 0
tmp52 = 0
If IsNumeric(Cells(temp, 39).value) Then
tmp39 = CCur(Cells(temp, 39).value)
End If
If IsNumeric(Cells(temp, 40).value) Then
tmp40 = CCur(Cells(temp, 40).value)
End If
If IsNumeric(Cells(temp, 41).value) Then
tmp41 = CCur(Cells(temp, 41).value)
End If
If IsNumeric(Cells(temp, 42).value) Then
tmp42 = CCur(Cells(temp, 42).value)
End If
If IsNumeric(Cells(temp, 43).value) Then
tmp43 = CCur(Cells(temp, 43).value)
…
|
|||
Open this report in the interactive analyzer, or submit your own file for analysis.