oppear 发表于 2020-10-10 16:51:19

用VB写了个程序,但是出问题了,求助

本帖最后由 oppear 于 2020-10-10 16:54 编辑

用Excel做了一个收益率评估模型,想再写一个敏感性分析的表,但是表格第一行算的没问题,从第二行开始之后,只有变量显示对了,其他两个因变量都保持不变,请各位大佬帮我康康

Sub plus()
    a = Sheet1.Cells(5, 3)'定义a=单位千瓦造价
    b = Sheet1.Cells(23, 12) '定义b=自有资金收益率
    c = Sheet1.Cells(7, 3) '定义c=小时数
    d = Sheet1.Cells(5, 3) '记录原始单位千瓦造价
   
    k = 2
    n = 2
    Z = 2
   
    Sheet1.Cells(1, 24) = "小时数"
    Sheet1.Cells(1, 25) = "千瓦造价(静态)"
    Sheet1.Cells(1, 26) = "自有资金内部收益率(税后)"
   
    inc_zaojia = Sheet1.Cells(1, 18) '定义inc=造价增加量
    Max_zaojia = Sheet1.Cells(2, 18) '定义MAX=目标收益
    inc_xiaoshishu = Sheet1.Cells(3, 18) '定义ina=小时数增加量
    Max_xiaoshishu = Sheet1.Cells(4, 18) '定义小时数区间上限

   
    ActiveWorkbook.RefreshAll '刷新表格
    While (c <= Max_xiaoshishu)
      If (b < Max_zaojia) Then   '如果当前收益率<目标收益率,那么小时数不变的时候,增加造价会使收益率变低,因此造价应使其自减
            While (Abs(Max_zaojia - b) > 0.0005) '循环开始,判断(目标收益率和计算收益率之间的绝对差值)是否小于(目标收益率与计算收益率之间的最大差值)
                  a = a - inc_zaojia '造价减少
                  Sheet1.Cells(5, 3) = a '将新增造价赋予表格
                  ActiveWorkbook.RefreshAll '刷新表格
                  b = Sheet1.Cells(23, 12) '新的收益率计算值赋予b
            Wend '结束循环
      Else
            While (Abs(Max_zaojia - b) > 0.0005) '循环开始,判断(目标收益率和计算收益率之间的绝对差值)是否小于(目标收益率与计算收益率之间的最大差值)
                  a = a + inc_zaojia '造价增大
                  Sheet1.Cells(5, 3) = a '将新增造价赋予表格
                  ActiveWorkbook.RefreshAll '刷新表格
                  b = Sheet1.Cells(23, 12) '新的收益率计算值赋予b
            Wend '结束循环
      End If
      
      Sheet1.Cells(Z, 25) = a '将此时的单位千瓦造价赋予空表格
      Sheet1.Cells(k, 26) = b '将接近目标收益率的计算收益率赋予空表格
      Sheet1.Cells(n, 24) = c '将此时的小时数赋予空表格
      ActiveWorkbook.RefreshAll'刷新表格
      
      c = c + inc_xiaoshishu'小时数增加
      Sheet1.Cells(7, 3) = c'将新增小时数赋予表格
      Sheet1.Cells(5, 3) = d'将造价重置
      ActiveWorkbook.RefreshAll'刷新表格
               
         
      n = n + 1
      Z = Z + 1
      k = k + 1
            
    Wend
End Sub

疾风怪盗 发表于 2020-10-10 17:17:02

看这个太麻烦了,你直接给模版,给个需求比较简单
页: [1]
查看完整版本: 用VB写了个程序,但是出问题了,求助