2014-10-01 2 views
1

Я пытаюсь создать сценарий VBA для Microsoft Access, который вытаскивает заголовки (такие как г-н, г-жа, д-р и т. Д.) Из поля имени, а затем возвращает очищенная конкретная версия этого названия. Я попытался сделать многомерный массив с заголовком в одном столбце и очищенным заголовком в другом столбце, но когда я пытаюсь скомпилировать скрипт, я получаю синтаксическую ошибку. Я знаю, что синтаксическая ошибка связана с многомерным массивом, поскольку я основывал это на предыдущем скрипте, который раньше просто находил старые заголовки, и он работал нормально. Что мне не хватает, что является причиной синтаксической ошибки? Не правильно ли я назвал многомерный массив? По общему признанию, я новичок в сценариях 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

Смежные вопросы