2015-04-19 111 views
0

我与变量“porcen”的分这样的:重新计算式

Dim porcen as Integer 
porcen = Cells(1, 1).Value 

一些计算之后我有3个变量。 Var1,Var2和Var3取决于变量porcen。

ActiveCell.FormulaR1C1 = "=(IF(R[" & var1 & "]C="""","""",((COUNTIF(R[" & var1+ 1 + var2 & "]C:R[" & var1 + 1 & "]C,R[" & var1 & "]C))-(COUNTIF(R[" & var3 & "]C:R[-5]C,R[" & var1 & "]C)))/(" & var2 & ")))" 

我不知道为什么如果我改变单元格(1,1)的值,公式的结果保持不变。

我希望当我改变Cell(1,1)的值时,结果也会改变。

+0

当然,假设您只是根据porcen的值忽略了设置'Var1','Var2'和'Var3'的代码,那么'Gary's Student'的答案是正确的。你必须把你写的代码(或者更好的方法是调用它),然后是该工作表的'Worksheet_OnChange'事件。如果你不这样做,那么当'Cells(1,1)'的值改变时,Excel不知道触发你的函数的调用。 – FreeMan

回答

3

如果您在值细胞(1,1)改变,你必须重新计算porcen,VAR1,VAR2,VAR3来反映这种变化。您可以使用事件宏自动执行此操作。

1

它看起来像porcen是一个长期的,串或者甚至是被分配价值从A1变体(又称细胞(1,1))。如果要将porcen锁定为A1,请将其声明为范围类型变量,并将其作为A1输入Set

dim porcen as range 
set porcen = cells(1, 1) 

' do stuff with porcen.Value or porcen.Row or porcen.Column, etc just like a cell 

' some say you don't have to do the next step before exiting the sub. I do it anyways. 
set porcen = nothing