【发布时间】:2014-11-25 13:05:12
【问题描述】:
我有一个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
我不认为这些函数在这一点上是相关的,而只是当公式中的变量发生变化时函数不重新计算的问题......
【问题讨论】:
-
发布您的代码。我的猜测是您将值分配给单元格而不是函数本身。
-
我已经添加了
-
问题是它没有重新计算......但我应该提到公式在计算一次后就消失了......我如何将公式保留在那里以供初学者使用,那么我如何得到它重新计算是我需要帮助的
标签: vba excel excel-formula calculated-field