Excel 在VBA中使用文本函数

Excel 在VBA中使用文本函数,excel,vba,Excel,Vba,我正在使用LEFT、UCASE、MID和其他一些文本函数。 例如如果UCase(Mid(VBAFormField,4,3))=“ABC”,则 对于大多数用户来说,代码运行良好。在一台电脑上,它给出了一个错误,似乎需要修改。 例如如果UCase(Application.Worksheetfunction.Mid(VBAFormField,4,3))=“ABC”,那么 我尝试过的事情: Excel版本完全相同 两台计算机上的VBA参考库相同 有什么想法吗?我想一定是有一个附加组件或语言设置导致了冲突

我正在使用LEFT、UCASE、MID和其他一些文本函数。 例如
如果UCase(Mid(VBAFormField,4,3))=“ABC”,则

对于大多数用户来说,代码运行良好。在一台电脑上,它给出了一个错误,似乎需要修改。 例如
如果UCase(Application.Worksheetfunction.Mid(VBAFormField,4,3))=“ABC”,那么

我尝试过的事情:

  • Excel版本完全相同
  • 两台计算机上的VBA参考库相同

  • 有什么想法吗?

    我想一定是有一个附加组件或语言设置导致了冲突。然而,正如Tim Williams指出的,当VBA函数存在时,您正在VBA中使用工作表函数来完成您需要完成的任务

    虽然可能没有必要,但您可以进一步确定公式的范围,使其特定于vba,以确保使用适当的库

    MsgBox VBA.UCase(VBA.Mid("SomeText!", 4, 3))
    

    我经常体验到,VBA(2010)会为一个项目突出显示一个缺失的库,该项目的库未缺失,因为另一个库实际上缺失。它通常只是代码中任何库的第一个引用。因此,您应该在代码中进一步查找缺少的库,更可能是一个不太标准的对象


    我还经常体验到(VBA的任何版本高达365)错误不会立即显示,而是“记住”。我已经向自己解释了这一点,因为我承认,给定一个大型项目,VBA将根据需要组装所需的部件,但一旦发现错误,它将不会被第二次忽略,并立即标记。这种行为可以解释为什么只有一台PC反对该代码。其他人只是还没有找到解决办法。

    什么是
    VbaFormField
    ?如果只使用Mid()而不使用
    Application.Worksheetfunction.Mid()
    ?您使用这个函数有什么原因吗?为了澄清,我知道MID是一个VBA函数,也是一个工作表函数。所以它可以写成:1。中(……)2。VBA.Mid(…)3。application.Worksheet.Mid(…)我只是认为第一个选项是最有效的代码(它适用于大多数PC)。但是在这个问题上,PC选项1不起作用,选项2和3将解决这个问题。VBAFormField只是一个文本变量,
    Mid
    错误是一个模糊的问题,如下@Variatus所述。检查所有项目引用中是否有一个标记为“缺失”的引用,以便进行澄清。我知道MID是一个VBA函数,也是一个工作表函数。所以它可以写成:1。中(……)2。VBA.Mid(…)3。application.Worksheet.Mid(…)我只是认为第一个选项是最有效的代码(它适用于大多数PC)。添加VBA。或Application.Worksheet。将使代码在有问题的PC上运行。我想我想知道为什么??