2014-10-01 92 views
1

我正在尝试为Microsoft Access创建一个VBA脚本,该名称从名称字段中抽取标题(如Mr.,Mrs.,Dr.等),然后返回一个清晰的特定版本的标题。我试图制作一个多维数组,其中一列中的标题和另一列中的已清理标题,但是当我尝试编译脚本时,出现语法错误。我知道语法错误是由于多维数组,因为我基于此前的脚本,以前的脚本只是找到旧的标题,它运行良好。 我错过了什么导致这是一个语法错误?我没有正确调用多维数组吗?无可否认,我是VBA脚本的新手,在编程时会生锈,所以如果我错过简单的东西,请原谅我。尝试在VBA中创建多维数组时出现语法错误

Public Function findTitles(inName) As String 
    ' Returns cleaned up titles 
    Dim strName As String 
    Dim strTitle As String 
    Dim Titles As Variant 
    Titles = Array(Array("Ms", "Ms."), Array("Miss ", "Miss"), Array("Mrs", "Mrs."), Array("Mr", "Mr."), Array("Master", "Master"), Array("Rev", "Rev."), Array("Reverend", "Reverend"), Array("Fr", "Fr."),Array("Father", "Father"), Array("Dr", "Dr."), Array("Doctor", "Doctor"), Array("Atty", "Atty."), Array("Attorney", "Attorney"),Array("Prof", "Prof."), Array("Professor", "Professor"), Array("Hon", "Hon."), Array("Honorable", "Honorable"), Array("Pres", "Pres."), Array("President", "President"), Array("Gov", "Gov."), Array("Governor", "Governor")) 

    Dim I 
    I = 0 
    strTitle = "" 

    'Compare input to list of Titles 
    Do 
     If inName Like Titles(I, 0) & " *" Then 
      strTitle = Titles(I, 1) 
     Else 
      I = I + 1 
     End If 
    Loop While (strTitle = "" And I < UBound(Titles)) 

    cleanTitles = strTitle 
End Function 

回答

4

的问题是,你的阵列是不是多维,但嵌套。您可能得到的错误不是语法错误,而是“下标超出范围”。错误。你需要改变你的阵列statments像这样:

Titles(I, 0) 

应该

Titles(I)(0) 

另外在你的最后一行,你有:

cleanTitles = strTitle 

我想你的意思是:

findTitles = strTitle 
+0

谢谢。你是正确的,数组声明是错误的。 – TKESuperDave 2014-10-01 21:07:14