VBA宏不自动更新单元格

时间:2017-12-11 23:51:00

标签: excel vba excel-vba combobox disabled-input

我有一张表根据一个单元格的变化来计算一些关键的金融变量(这些假设是预先计算的,但每次单元格更改时Excel需要计算,通常每个单元都运行速度超快)。

使用ActiveX组合框(允许用户控制/搜索等)我允许用户更改单元格B1:

Private Sub ComboBox1_Change()
Application.EnableEvents = False
Range("B1").Value = ComboBox1.ListIndex + 2
End Sub  

我想解决的当前问题是尝试批处理这些问题,以便我可以迭代地运行用户定义的列表。

在下面的示例中(这不是我想要的最终结果,只是我可以轻松更改单元格B1的概念证明),我试图将单元格B1更改为值1,然后是2,然后是3并查看结果是并且稍后将使其适应比仅仅1,2,3

更灵活
Private Sub CommandButton2_Click()
Dim counter As Integer
For counter = 1 To 3
Application.EnableEvents = False
Worksheets("Hurdle Evaluation").Range("B1").Value = counter
Worksheets("MOBCashFlow").Calculate
Worksheets("Hurdle Evaluation").Calculate

Worksheets("IterateNPV").Range("A2").Value = counter
Worksheets("IterateNPV").Range("B2").Value = Worksheets("Hurdle Evaluation").Range("F5").Value
Worksheets("IterateNPV").Range("C2").Value = Worksheets("Hurdle Evaluation").Range("F6").Value
Worksheets("IterateNPV").Range("D2").Value = Worksheets("Hurdle Evaluation").Range("G5").Value
Worksheets("IterateNPV").Range("E2").Value = Worksheets("Hurdle Evaluation").Range("G6").Value
Worksheets("IterateNPV").Range("F2").Value = Worksheets("Hurdle Evaluation").Range("J5").Value
Range("A2").EntireRow.Insert
Next counter
End Sub  

结果(如下所示):

3   $10,134,808.14  $9,194,031.64   $10,134,808.14  $9,194,031.64   758.129033
2   $10,134,808.14  $9,194,031.64   $10,134,808.14  $9,194,031.64   758.129033
1   $10,134,808.14  $9,194,031.64   $10,134,808.14  $9,194,031.64   758.129033  

表明底层单元格没有改变或正在改变,并且被前一个宏覆盖(这些值是组合框中所选项目的正确值)。我正在寻找任何创造性的解决方案来手动覆盖链接到ComboBox的B1单元格。

谢谢。

1 个答案:

答案 0 :(得分:0)

找到一个有效的解决方案,但仍然不确定它的工作原理 我没有链接到单元格更改(“B1”)而是更改它以更改索引:

For counter = 1 To 3
Worksheets("Hurdle Evaluation").ComboBox1.ListIndex = counter
Worksheets("MOBCashFlow").Calculate
Worksheets("Hurdle Evaluation").Calculate

Worksheets("IterateNPV").Range("A2").Value = counter
Range("A2").EntireRow.Insert
Next counter
End Sub