子工作来自“Book1”而不是“PERSONAL.XLSB”

时间:2017-07-01 12:01:21

标签: vba excel-2016

我使用Excel 2016,此Sub复制自:VBA to remove numbers from start of string/cell

Sub RemoveNonDigits()
  Dim X As Long, Z As Long, LastRow As Long, CellVal As String
  Const StartRow As Long = 1
  Const DataColumn As String = "A"

  Application.ScreenUpdating = False

  LastRow = Cells(Rows.Count, DataColumn).End(xlUp).Row
  For X = StartRow To LastRow
    CellVal = Cells(X, DataColumn)
    While IsNumeric(Left(CellVal, 1))   ' Here
      CellVal = Mid(CellVal, 2)         ' all digits at the start
    Wend                                ' are removed
    Cells(X, DataColumn) = trim(CellVal)
  Next

  Application.ScreenUpdating = True
End Sub

当我从您的网站复制此子网并将其粘贴到新模块中时,在新工作簿(Book1)中,它可以正常工作。

当我从Book1复制sub并将其粘贴到PERSONAL.XLSB中的新模块时,我收到此错误:

“编译错误: 参数数量错误或属性分配无效“。

“Sub RemoveNonDigits()”以黄色突出显示,“trim”以蓝色突出显示。

有谁可以告诉我为什么Sub工作在“Book1”而不是“PERSONAL.XLSB”?

非常感谢任何帮助。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

看起来你有另一个名为trim的函数带有其他参数,或者可能是某个其他模块中的属性或变量,引用的库或加载项。

电话VBA.Trim通过消除函数的名称来解决您的问题。通过在函数的名称前添加VBA.作为前缀,您可以告诉编译器显式您要调用VBA内置的函数Trim,而不是任何其他函数。< / p>

通常不需要使用VBA.进行前缀,但有时它有助于消除名称解析的歧义。