⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module1.bas

📁 用于三次采油技术的经济评价
💻 BAS
📖 第 1 页 / 共 3 页
字号:
 
 
  
  
  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 + -