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

在两个相同的VBA函数中,有一个函数突然返回#NAME错误,vba,excel,Vba,Excel,我刚刚经历了一个宏的突然故障。它调用以下函数,该函数使用选定的可选分隔符连接一系列单元格: 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 In

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

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
公共函数生成列表(ByVal cellRange作为范围,可选ByVal分隔符作为字符串)
'函数将一系列单元格与可选的
调光范围
将新文本设置为字符串
将计数设置为整数
计数=0
newText=“”
对于cellRange中的每个c
计数=计数+1
新文本=新文本和c.值
如果计数
它只是将手工输入的单元格数据连接在一起——任何值似乎都在破坏它。问题似乎在于如何引用/调用函数(对不起,术语不太好),而不是函数本身

这是完美的工作。我在文件夹之间移动文件,它突然停止工作,每次都返回一个
#NAME
错误。代码中没有任何更改,因此我使用相同的VBA将其从
MAKELIST
更改为
MAKELIST2
。这很好用。但是,我显然不想在我的工作簿中更改对函数的每个引用,我希望它是健壮的、不受未来影响的,这样其他用户就不会发生这种情况。有人能解释为什么会发生这种情况吗


谢谢

查看有问题的范围会很有用。虽然你可以使用这个短得多的函数

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


cellRange
中的单元格指的是什么?公式?外部推荐人?抱歉——我已经在上面澄清了这一点。只需文本字符串。谢谢您的反馈。你有没有试过他的答案?您是否将计算模式设置为自动?本身不是,因为问题不在于函数如何工作(尽管我将尝试进一步优化代码)。我确实将其设置为自动——正如我在回复@brettdj时所说的:是否可能由于函数的存储位置和模块的命名方式而产生冲突?我已经改变了这两个因素,一切都有可能,不幸的是,我们都不知道你在什么条件下工作。像这样的问题很难诊断,而你认为好的可能是问题的真正原因。为此,我没有尝试你的答案,因为问题似乎已经缓解了。函数的存储位置和模块的命名方式是否可能导致冲突?我已经改变了这两个因素,它又恢复了生机。
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