📄 module1.bas
字号:
For IntLoop = 1 To VarPingJiaQi '成本表总成本费(分年)
'ss = 0
'For KK = 1 To 5
'MsgBox VarHuaXueJiFei(I, KK)
' ss = ss + VarHuaXueJiFei(IntLoop, KK)
'Next KK
VarZongChengBenFei(IntLoop) = Varyaojifei(IntLoop) + VarCostList1Total(IntLoop) + VarCostList2Total(IntLoop)
'VarZongJingYingChengBenFei(IntLoop) = VarZongChengBenFei(IntLoop) - VarZheJiuFei(IntLoop) - vartanxiao(IntLoop) - VarChuLiangFei(IntLoop) - VarCaiWuFei(IntLoop)
Next IntLoop
'技术经济指标汇总表 计算
For i = 0 To 32 '初始化
VarShuLiang(i) = 0
Next i
VarShuLiang(1) = VarPingJiaQi
ss = 0 '总产油量
For i = 1 To VarPingJiaQi
ss = ss + VarShengCheng(i, 2)
Next i
VarShuLiang(2) = ss
ss = 0 '总销售收入
For i = 1 To VarPingJiaQi
ss = ss + VarXiaoShouShouRu(i)
Next i
VarShuLiang(3) = ss
For i = 1 To VarPingJiaQi '总投资
VarShuLiang(4) = VarShuLiang(4) + VarTouZiZongE(i) '总投资
VarShuLiang(5) = VarShuLiang(5) + VarGuDingZiChanTouZi(i) '固定投资
VarShuLiang(6) = VarShuLiang(6) + VarLiuDongZiJin(i) '流动资金
VarShuLiang(7) = VarShuLiang(7) + VarJianSheLiXi(i) '建设期利息
VarShuLiang(8) = VarShuLiang(8) + 0 '投资方向调节税?????????
Next i
For i = 1 To VarPingJiaQi
VarShuLiang(9) = VarShuLiang(9) + VarZongShui(i) '销售税金
'VarShuLiang(10) = VarShuLiang(10) + VarZongChengBenFei(I) '总成本费
VarShuLiang(11) = VarShuLiang(11) + VarZongJingYingChengBenFei(i) '经营成本
VarShuLiang(12) = VarShuLiang(12) + VarZheJiuFei(i) '折旧
VarShuLiang(13) = VarShuLiang(13) + VarCaiWuFei(i) '利息支出??????财务费
VarShuLiang(15) = VarShuLiang(15) + VarXiaoShouShouRu(i) * VarQiTa(29) / 100 + VarXiaoShouFei(i) '可变成本
'VarShuLiang(15) = VarShuLiang(15) + VarChuLiangFei(i) * VarChuLiangFeiBiLi / 100 + VarWeiHuFei(i) * VarWeiHuFeiBiLi / 100 '可变成本
VarShuLiang(15) = VarShuLiang(15) + VarChuLiangFei(i) + VarWeiHuFei(i) '可变成本
'在上面一行中 可变成本里 已经 有储量使用费*比例 和 油田维护费*比例
VarShuLiang(15) = VarShuLiang(15) + VarDongliFei(i) '可变成本
VarShuLiang(15) = VarShuLiang(15) + VarRanLiaoFei(i) + VarYouQiFei(i) '可变成本
VarShuLiang(15) = VarShuLiang(15) + VarQingShuiFei(i) + VarWuShuiFei(i) + Varyaojifei(i) '可变成本
'固定成本=财务费+工资+福利+修理费+材料费+增量原油 *原油商品率*管理费率+其它费用+折旧费
VarShuLiang(16) = VarShuLiang(16) + VarCaiWuFei(i) + VarZheJiuFei(i) + VarGongZiFei(i) '固定成本成本
VarShuLiang(16) = VarShuLiang(16) + VarFuLiFei(i) + VarXiuliFei(i) '固定成本成本
VarShuLiang(16) = VarShuLiang(16) + VarCaiLiaoFei(i) + VarShengCheng(i, 2) * VarQiTa(28) * VarQiTa(8) / 100
VarShuLiang(16) = VarShuLiang(16) + VarQiTaFei(i)
VarShuLiang(17) = VarShuLiang(17) + VarLiRunZongE(i) '利润总额
VarShuLiang(18) = VarShuLiang(18) + VarLiRunZongE(i) + VarZongShui(i) '利税总额
VarShuLiang(19) = VarShuLiang(19) + VarSuoDeShui(i) '总所得税
Next i
VarShuLiang(10) = VarShuLiang(15) + VarShuLiang(16)
'VarShuLiang(20) = 0 '静态指标
'MsgBox VarLiuDongZiJin(1)
VarShuLiang(14) = VarLiuDongZiJin(1) * (1 - VarQiTa(4) / 100#) + VarLiuDongZiJin(1) * (1 - VarQiTa(5) / 100#) '自有资金
' VarShuLiang(14) = 100 '''''''''''''''''''''''''''''''''''''人为设定
VarShuLiang(21) = VarShuLiang(17) / VarShuLiang(4) / DongTai * 100 '投资利润率
VarShuLiang(22) = VarShuLiang(18) / VarShuLiang(4) / DongTai * 100 '投资利税率
VarShuLiang(23) = VarShuLiang(17) / VarShuLiang(14) / DongTai * 100 '资本金利润率
'VarShuLiang(24) = 0 '借款偿还期
'VarShuLiang(25) = 0 '所得税前动态指标
VarShuLiang(26) = caculFIRR(VarShuiQianJing(), VarPingJiaQi) '财务内部收益率
VarShuLiang(27) = VarShuiQianLeiJiTie(VarPingJiaQi) '财务净现值
VarShuLiang(28) = FQianHuiShouQi '税前投资回收期
'VarShuLiang(29) = 0 '所得税后动态指标
VarShuLiang(30) = caculFIRR(VarShuiHouJing(), VarPingJiaQi) '财务内部收益率
VarShuLiang(31) = VarShuiHouLeiJiTie(VarPingJiaQi) '财务净现值
VarShuLiang(32) = FHouHuiShouQi '税前投资回收期
SuoDeshuiMark = 0
'************************************************************
End Sub
Public Sub OpenHuaXueJiList()
Dim Count As Integer
Dim TempS As String
' Dim Item(0 To 10) As String
Count = 0 '表中的记录数
'MsgBox OpeningDatabase
If OpeningDatabase = "" Then
MsgBox "数据库中没有数据!"
Exit Sub
End If
On Error GoTo myerrr
Set Data1 = New ADODB.Connection
Data1.CursorLocation = adUseClient
Data1.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & OpeningDatabase
Set adozjyyyhg = New ADODB.Recordset
adozjyyyhg.Open "select * from 化学剂用量参数表", Data1, adOpenStatic, adLockOptimistic
With adozjyyyhg
If (.EOF = True) And (.BOF = True) Then
'MsgBox "数据库-化学剂用量无记录", "0", "警告"
Exit Sub
Else
.MoveFirst
Do While .EOF = False
Count = Count + 1
.MoveNext
Loop
' MsgBox "数据库共有" & Count & "条记录"
End If
End With
adozjyyyhg.MoveFirst
For i = 1 To Count
For k = 1 To 10
TempS = adozjyyyhg.Fields(k).Value
VarHuaXueji(i, k + 1) = Val(TempS) '将数据库数据写入化学剂变量数组
Next k
adozjyyyhg.MoveNext
Next i
adozjyyyhg.Close
For i = 1 To Count
VarHuaXueji(i, 1) = i '将年限数据写入化学剂变量数组
Next i
VarHNianXian = Count
If VarPingJiaQi < VarHNianXian Then
VarPingJiaQi = VarHNianXian
End If
Exit Sub
myerrr:
End Sub
Public Sub OpenShengChengList()
Dim Count As Integer
Count = 0 '表中的记录数
If OpeningDatabase = "" Then
MsgBox "请打开一个数据库!"
Exit Sub
End If
On Error GoTo ioerr
Set Data1 = New ADODB.Connection
Data1.CursorLocation = adUseClient
Data1.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & OpeningDatabase
Set adozjyyyhg = New ADODB.Recordset
adozjyyyhg.Open "select * from 数据输入表", Data1, adOpenStatic, adLockOptimistic
With adozjyyyhg
If (.EOF = True) And (.BOF = True) Then
'MsgBox "数据库-生产数据无记录", "0", "警告"
Exit Sub
Else
.MoveFirst
Do While .EOF = False
Count = Count + 1
.MoveNext
Loop
'MsgBox "数据库共有" & Count & "条记录"
End If
End With
VarPingJiaQi = Count
'FrmListOutput.MSFlexGrid1.Rows = Count + 1
adozjyyyhg.MoveFirst
For i = 1 To Count
For k = 1 To 7
'MsgBox form1.data1.Recordset.Fields(k).
TempS = adozjyyyhg.Fields(k).Value
'FrmShengCheng.MSFlexGrid1.TextArray(k + I * 8) = TempS
VarShengCheng(i, k + 1) = Val(TempS)
Next k
adozjyyyhg.MoveNext
Next i
adozjyyyhg.Close
For i = 1 To Count
VarShengCheng(i, 1) = i
Next i
Exit Sub
ioerr:
'MsgBox "建立的数据有问题!"
End Sub
Public Sub OpenTouZiList()
Dim Count As Integer
Dim Item(0 To 10) As String
Count = 0 '表中的记录数
'MsgBox OpeningDatabase
If OpeningDatabase = "" Then
MsgBox "请打开一个数据库!"
Exit Sub
End If
On Error GoTo myerrr
''******************修改纪录***********************
Set Data1 = New ADODB.Connection
Data1.CursorLocation = adUseClient
Data1.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & OpeningDatabase
Set adozjyyyhg = New ADODB.Recordset
adozjyyyhg.Open "select * from 投资表", Data1, adOpenStatic, adLockOptimistic
'Data1.Refresh
With adozjyyyhg
' .OpenRecordset
.Update
If (.EOF = True) And (.BOF = True) Then
' MsgBox "数据库-投资表无记录", "0", "警告"
Exit Sub
Else
.MoveFirst
Do While .EOF = False
Count = Count + 1
.MoveNext
Loop
'MsgBox "数据库共有" & Count & "条记录"
End If
'VarPingJiaQi = Count
'TxtNianXian.Text = Str(Count)
'Data1.Refresh
adozjyyyhg.MoveFirst
For i = 1 To Count
'FrmTouZi.MSFlexGrid1.TextArray(2 * I + 1) = form1.data1.Recordset.Fields(1).Value
VarTouZi(i) = adozjyyyhg.Fields(1).Value
varzchbl(i) = adozjyyyhg.Fields(2).Value
varzchnl(i) = adozjyyyhg.Fields(3).Value
VarLiuDongZiJin(i) = adozjyyyhg.Fields(4).Value
vardkbl(i) = adozjyyyhg.Fields(5).Value
vardknl(i) = adozjyyyhg.Fields(6).Value
' MsgBox VarLiuDongZiJin(I)
adozjyyyhg.MoveNext
Next i
If VarPingJiaQi < Count Then
VarPingJiaQi = Count
End If
End With
adozjyyyhg.Close
Exit Sub
myerrr:
'MsgBox "建立的数据有问题!"
End Sub
Public Sub OpenQiTaList()
Dim Count As Byte
If OpeningDatabase = "" Then
MsgBox "请打开一个数据库!"
Exit Sub
End If
On Error GoTo myerrr
Set Data1 = New ADODB.Connection
Data1.CursorLocation = adUseClient
Data1.Open "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & OpeningDatabase
Set adozjyyyhg = New ADODB.Recordset
adozjyyyhg.Open "select * from 其它参数表", Data1, adOpenStatic, adLockOptimistic
With adozjyyyhg
If (.EOF = True) And (.BOF = True) Then
' MsgBox "数据库-参数设置无数据", "0", "警告"
Exit Sub
Else
.MoveFirst
Do While .EOF = False
Count = Count + 1
.MoveNext
Loop
'MsgBox "数据库共有" & Count & "条记录"
End If
.MoveFirst
For k = 0 To 29
VarQiTa(k + 8) = .Fields(k).Value
Next k
VarWeiHuFeiBiLi = .Fields(30).Value
VarChuLiangFeiBiLi = .Fields(31).Value
VarCaiWuFeiBiLi = .Fields(32).Value
.Close
End With
Exit Sub
myerrr:
'MsgBox "建立的数据有问题!"
End Sub
Public Function Power(X As Double, Y As Double) As Double
Power = Exp(Y * Log(X))
End Function
Public Function FHouHuiShouQi() As Double
Dim ss As Double
ss = 0
For i = 1 To VarPingJiaQi - 1
If (VarShuiHouLeiJiTie(i) <= 0) And (VarShuiHouLeiJiTie(i + 1) > 0) Then
ss = ss + i - (VarShuiHouLeiJiTie(i) / VarShuiHouTie(i + 1))
End If
Next i
FHouHuiShouQi = ss
End Function
Public Function FQianHuiShouQi() As Double
Dim ss As Double
ss = 0
For i = 1 To VarPingJiaQi - 1
If (VarShuiQianLeiJiTie(i) <= 0) And (VarShuiQianLeiJiTie(i + 1) > 0) Then
ss = ss + i - (VarShuiQianLeiJiTie(i) / VarShuiQianTie(i + 1))
End If
Next i
FQianHuiShouQi = ss
End Function
Public Function caculFIRR1() As Double
Dim Jing(1 To 30) As Double
Dim A As Double
Dim b As Double
Dim f0 As Double
Dim F1 As Double
Dim X As Double
Dim i As Integer
Dim fx As Double
Jing(1) = -6526.3 '所得税后净现金例子,结果应为16.5%
Jing(2) = -4660.85
Jing(3) = 3758.01
Jing(4) = 6820.43
Jing(5) = 8812.08
Jing(6) = 13055.18
Jing(7) = 7112.42
Jing(8) = 3618.09
Jing(9) = 1215.32
'Jing(1) = -15073.1 '所得税后净现金例子,结果应为16.5%
'Jing(2) = -71194.7
'Jing(3) = -97162.7
'Jing(4) = -83746.4
'Jing(5) = -28982#
'Jing(6) = 9073.4
'Jing(7) = 63112.6
'Jing(8) = 73878.9
'Jing(9) = 112256.2
'Jing(10) = 90626.5
'Jing(11) = 72881.1
'Jing(12) = 94032.2
'Jing(13) = 103644.1
'Jing(14) = 92497#
'Jing(15) = 81498.7
'Jing(16) = 88307#
'Jing(17) = 83678.1
'Jing(18) = 73941.1
'Jing(19) = 63647.2
'Jing(20) = 51088.8
'Jing(21) = 38067#
'Jing(22) = 28800.5
'Jing(23) = 19466.5
'Jing(24) = 12977.9
'Jing(25) = 9611.2
'Jing(26) = 6951.4
'Jing(27) = 3403.8
'Jing(28) = 2319.1
'
'Jing(1) = -15073.1 '所得税前净现金例子,结果应为18.7%
'Jing(2) = -71194.7
'Jing(3) = -97162.7
'Jing(4) = -83746.4
'Jing(5) = -28982#
'Jing(6) = 9073.4
'Jing(7) = 63112.6
'Jing(8) = 73878.9
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -