Excel VBA UDF自动更正错误大小写

我有一个Excel VBA插件,添加用户定义的函数(UDF)。 这些function在计算结果方面都很好。

我使用MacroOptions将它们input到函数向导中。

在工作表中使用它们时,它们自动更正大小写的函数名称。 例如,如果函数名为MyFunction,并且用户将其input为myfunction,则在input公式时,会将函数名称的大小写自动更正为MyFunction。 就像使用Excel的内置工作表函数一样,如果input例如中位数,它将自动更正为MEDIAN。

但是,有一个UDF的自动更正是不正确的。 我希望它是例如MyFunction,但即使用户像这样input,它会自动为所有小写myfunction自动更正。

我已经查看了所有相关的代码,并且找不到任何理由。 除了函数名称,函数描述以及函数本身的代码和参数外,所有其他UDF的代码都是相同的。

任何想法为什么这一个UDF autocorcts函数名称不同?

这是一个MacroOptions行的例子:

Application.MacroOptions "MyAddin.xla!MyFunction", "Description of MyFunction for the Excel's Function Wizard.", , , , , "Custom category in Function Wizard" 

UDF本身看起来像这样:

 Public Function MyFunction(param1 As Long, param2 As Long) As Long 'MyFunction's code here... End Function 

再次,UDF计算正确。 问题是与函数名称的自动更正。

我尝试closures插件,然后用新的默认Excel工作簿中受影响的函数创build一个具有相同函数名称的新UDF。 它工作正常 – 它自动更正到正确的情况。 但是当我closures它并返回插件时,问题又回来了。

更新:

以下是我解决问题的步骤(感谢Charles Williams!):

  1. 将加载项工作簿的IsAddin属性设置为false。 这将它变成一个工作簿,所以你会得到一个工作表。
  2. 文件>另存为,保存为新的xlsm工作簿。 重要提示:确保在工作表中没有受影响的函数名称的公式; 否则你会回到这一步。
  3. “文件”>“选项”>“加载项”>“执行”,取消加载项,以便在Excel启动时不加载。
  4. 退出并重新启动Excel。
  5. 打开新的xlsm工作簿。
  6. 在正确的情况下input具有函数名称的公式。 它不应该自动更正为不正确的情况。
  7. 删除公式。
  8. 保存xlsm工作簿。
  9. 做一个原始的加载项的备份,因为你要覆盖它。
  10. 保存xlsm作为一个新的xla加载项,覆盖旧的(我认为这也适用于xlam,但没有尝试)。
  11. “文件”>“选项”>“加载项”>“执行”,重新检查加载项,以便在Excel启动时加载。
  12. 重新启动Excel。 testing问题; 问题应该是固定的。

Excel坚持记住UDF第一次进入公式时使用的大写字母。

除了重命名UDF之外,我还没有find明智的重置方法。

如果XLAM的工作表包含引用UDF的公式,则该引用将locking大小写。 如果XLAM的工作表不包含引用UDF的公式,那么它将从在Excel会话中使用它的第一个工作簿中设置。 如果您有两个保存的不同大小写的工作簿,并且它们都被打开,那么第二个大写字母就会被第一个大写字母覆盖。