我有一个Excel式:Excel公式计算一次,然后删除
=SplitKey(GetSysCd(INDEX([ReportValue],MATCH("mtr_make_model",[FieldName],0)),INDEX([ListName],MATCH("mtr_make_model",[FieldName],0))), 0)
这是运行在VBA几个子程序,但主要是匹配值和插入这些值到细胞中。当它找到“mtr_make_model”的值时,它将运行并匹配sys代码表中的值。我遇到的问题是它只计算一次,然后删除公式,现在只有值...如果我转到mtr_make_model字段并更改该值,则公式不会重新计算。有没有人听说过这种情况?这是由于VBA代码中的东西吗?如何使该公式保持原状,如果某些数值发生变化,公式会重新计算?
在此先感谢。
这里有两个功能:
Public Function GetSysCd(ByVal name As String, sysCdTableName As String) As String
Dim r As Integer
Dim sysCdTable As Range
Dim nameList As Variant
Dim sysCd As String
On Error GoTo GetSysCd_Error
Set sysCdTable = Worksheets("sys_cd").Range(sysCdTableName)
nameList = WorksheetFunction.Index(sysCdTable, 0, 2)
r = WorksheetFunction.Match(name, nameList, 0)
sysCd = WorksheetFunction.Index(sysCdTable, r, 1)
GetOutOfHere:
On Error GoTo 0
GetSysCd = sysCd
Exit Function
GetSysCd_Error:
sysCd = ""
GoTo GetOutOfHere
End Function
Public Function SplitKey(s As String, v As Integer)
Dim aString As Variant
Dim r As Integer
If Len(s) > 2 Then
aString = Split(s, "_")
If v = 0 Or v = 1 Then
SplitKey = aString(v)
Else
SplitKey = aString(0)
End If
Else
SplitKey = ""
End If
End Function
我不认为功能是在这一点上相关,而只是一个功能的事情不重新计算当式变化的变量...
发布您的代码。我的猜测是你将值赋给单元格而不是函数本身。 – 2014-09-30 19:37:26
我已经添加了 – 2014-09-30 19:41:15
问题在于它没有重新计算......但我应该提到公式在计算一次之后就消失了......我如何将公式存放在初学者那里,然后如何得到它重新计算是我需要帮助 – 2014-09-30 20:57:03