用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
看这个太麻烦了,你直接给模版,给个需求比较简单
页:
[1]