Функция VBA не будет работать в SQL-запросе: неопределенная функция в запросе - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в VBA, поэтому, пожалуйста, извините за любой словарный запас.Моя функция - это очень простой оператор if.Отлично работает при отладке, но когда я вызываю его из своего запроса, я получаю страшную ошибку «неопределенная функция в запросе».Вот как я называю это из моего запроса: color2: ItemColor ([Color]) .Цель состоит в том, чтобы взять инвентарный идентификатор и вытащить цвет на основе идентификационного кода.Эта функция будет в конечном итоге расширена для большого количества цветов (более 7), поэтому я не могу использовать функцию iif в запросе.Сначала я хотел протестировать VBA, используя всего несколько вариантов цвета.

Вот мой код:

Public Sub ItemColor()

If [Color] = "01" Then
    MsgBox "natural"

  Else
     MsgBox "shell"
  End If
End Sub

[Цвет] - это поле в том же запросе. [Цвет] - это строка, которая была извлечена из поля идентификатора с помощью функции Mid.Может ли эта функция vba работать на таком поле?

Может ли это быть потому, что я использую msgbox?Я пытался использовать Dim, (см. Код ниже), но он все еще не работал.Может быть, у меня был неправильный синтаксис?

Public Sub ItemColor()
Dim appearance As String

If [Color] = "01" Then
     appearance "natural"

  Else
     appearance "shell"
  End If
End Sub

1 Ответ

0 голосов
/ 04 июня 2018

Во-первых, вам нужна функция для возврата значения, поэтому ошибка указывает на неопределенную функцию.Попробуйте приведенный ниже код, если хотите жестко закодировать возвращаемые значения на основе предоставленного числа:

Public function getColor(colorID) as string
    Dim strColor as string

    Select case colorID
        Case 1
            StrColor = "color name"
        Case 2
            Strcolor = "different color"
    End select
    Getcolor = strcolor
End function
...