#名称?创建数据链接的自定义函数后出错

时间:2018-04-07 12:31:34

标签: vba excel-vba excel-formula excel

我正致力于链接历史数据源,其中地理位置的拼写和排序不一致。我解决这个问题的方法是创建一个自定义的Excel函数,它可以删除名称中具有挑战性的部分(即标点符号,' saint'等),将地名字符串中的所有字符转换为数字值,加上它们,同时保留第一个字母。这样,除了第一个字母之外,字符出现的顺序应该是无关紧要的。这是我的代码:

Option Explicit

Public Function Scramble(ByVal str1 As String)
    ' This function is meant to generate a unique index of all the characters used
    ' in the string, regardless of their order. It also removes ambiguous spellings
    Dim count As Long, i As Long, firstLetter As String

    ' convert to upper case
    str1 = UCase(str1)
    ' remove punctuation first
    str1 = Replace(str1, ".", "")
    str1 = Replace(str1, ",", "")
    str1 = Replace(str1, "-", " ")
    str1 = Replace(str1, "'", "")
    ' now ambiguous spellings
    str1 = Replace(str1, "ST ", "")
    str1 = Replace(str1, "SAINT ", "")
    str1 = Replace(str1, "MAGNA", "GREAT")
    str1 = Replace(str1, "PARVA", "LESS")
    ' now extract the first letter
    firstLetter = Left(str1, 1)
    ' now prepositions
    str1 = Replace(str1, "AT ", "")
    str1 = Replace(str1, "IN ", "")
    str1 = Replace(str1, "THE ", "")
    str1 = Replace(str1, "UPON ", "ON")
    ' make sure to remove spaces last or else the searches will fail
    str1 = Replace(str1, " ", "")

    count = 0
    For i = 1 To Len(str1)
        count = count + Asc(Mid(str1, i, 1))
    Next i
    Scramble = firstLetter & Str(count)
End Function

我的问题是,当我在工作表中调用此函数时,它会返回#NAME?错误,这似乎也导致我的CONCAT工作表函数停止工作,同时调用{ {1}}错误。对于造成这种情况的原因,我感到很茫然。 Excel VBA似乎没有通常的编译器来捕获源代码中的错误,但我怀疑它可能是我的VBA代码中的语法错误?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

问题原因是我将模块名称从默认Module1更改为更具信息性的名称。