Функции VBA не работают, возвращает ошибку - PullRequest
2 голосов
/ 11 октября 2011

У меня есть проблема, которую я пытался решить в течение нескольких дней с помощью MS Access и функции VBA.

Для начала у меня есть следующая таблица

Имя = Команда

поля являются в основном текстовыми базами, если не указано иное ID (первичный ключ автономного номера) TeamID Non Prenom Location (создается путем объединения полей Nom, Prenom и Location)

В моей форме я хотел быизвлекать частичные детали, введенные в поля Nom, Prenom и Location.Затем передайте это обратно в базу данных, чтобы войти в поле TeamID для индивидуума.

Извлечение должно принять форму TeamID = mid(Location,0,4) & mid(Prenom,0,2) & mid(Nom,0,2à)

Однако я понимаю, что не могу поместить это всекция 'controle source' свойств для любого поля.

Поэтому после долгих поисков я решил, что мне следует использовать функцию в отдельном модуле (я делаю это довольно часто, объединяясь для создания «разумных» значений индекса).в большом количестве моих таблиц я нахожу первичный ключ autonumber не очень удобным для пользователя или не требующим пояснений.

Итак, в моем файле базы данных я создал модуль (называемый getInfo) с открытой функцией

Public Function getID() As String
Dim r As String
Dim i As String
i = "Twenty"

Ниже приведены некоторые из опций, которые я пробовал ....

'r = VBA.Strings.UCase$(String:=i) 'turning the value of i to uppercase

getID = r 'returns "TWENTY" as expected

или

'r = VBA.Strings.Mid$("TWENTY", 0, 2)
getID = r 'error and highlights above line?

или

'r = StrReverse(i)
getID= r 'again error and highlights above line

getID = VBA.Strings.Mid$(String:="TWENTY", Start:=0, Length:=2)
End Function

Затем я откроюнапример, окно «Выполнение» и запуск функции.

Мне кажется, что я могу только преобразовать значение в верхний или нижний регистр, любой поиск или манипулирование строкой просто дает мне сообщение с последующимg ошибка

Ошибка выполнения '5' аргумент или неправильный вызов процедуры

(пожалуйста, потерпите меня, я работаю на французском терминале, и поэтому мой перевод этой ошибки может быть не очень точным).

Однако все функции отображаются правильно, когда я их набираю, как и передаваемые параметры.при поиске в сети информация также остается такой же http://www.techonthenet.com/excel/formulas/index_vba.php

Так что я теряюсь в том, где я ошибаюсь.

Я предполагаю, что неправильно объявляю значение моих переменных, но я не понимаю почему.Этот код не работает в других местах (другие терминалы), поэтому я уверен, что это моя ошибка!

Но что это такое?

Я чувствую, что это действительно основная проблема,но просто не могу заставить функцию работать при работе со строкой.

Нужно ли вызывать эту функцию только из подпрограммы, а не напрямую, будет ли это так же на моей странице формы?

При необходимости я могу создать мини-базу данных с этим кодом.

1 Ответ

6 голосов
/ 11 октября 2011

Вам не нужен префикс пространства имен VBA.String, а синтаксис ArgName:= является необязательным, если вы следуете правилам того же порядка для необязательных параметров.

Mid$("TWENTY", 0, 2) завершается ошибкой, поскольку в VBA начинаются строкипо индексу 1, поэтому Mid$("TWENTY", 1, 2) вернет TW

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...