在两个相同的VBA函数中,突然返回#NAME错误

时间:2012-06-18 10:11:11

标签: excel vba excel-vba

我刚刚经历了一个宏的突然失败。它调用以下函数,该函数使用选定的可选分隔符连接一系列单元格:

Public Function MAKELIST(ByVal cellRange As Range, Optional ByVal delimiter As String)
 'Function to join a range of cells together with an optional
 Dim c As Range
 Dim newText As String
 Dim Count As Integer
 Count = 0
 newText = ""
 For Each c In cellRange
  Count = Count + 1
  newText = newText & c.Value
  If Count < cellRange.Count Then
   newText = newText & delimiter
  End If
 Next
 MAKELIST = newText
End Function

它只是简单地将手动输入的单元格数据连接在一起 - 任何值似乎都会破坏它。似乎问题在于如何引用/调用函数(抱歉,不能用命名法)而不是函数本身。

完美运作。我在文件夹之间移动了文件,它突然停止工作,每次都返回#NAME错误。代码中没有任何变化,因此我使用相同的VBA将其从MAKELIST更改为MAKELIST2。这非常有效。但是,我显然不希望在工作簿中更改对该函数的每个引用,并且我希望它具有健壮性和面向未来,因此这不会发生在其他用户身上。任何人都可以解释为什么会发生这种情况吗?

谢谢!

1 个答案:

答案 0 :(得分:6)

查看有问题的范围会很有用。虽然你可以使用这个更短的功能

[已更新以处理多个列范围]

Public Function MAKELIST2(ByVal cellRange As Range, Optional delimiter As String)
Dim rng1 As Range
For Each rng1 In cellRange.Columns
    MAKELIST2 = MAKELIST2 & Join(Application.Transpose(rng1), delimiter)
Next
End Function