VBA函数在sql查询中不起作用:查询中的未定义函数

时间:2018-06-04 03:04:01

标签: sql ms-access if-statement access-vba undefined-function

我是vba的新手,所以请原谅任何词汇失误。我的函数是一个非常基本的if语句。在调试时运行很好,但是当我从查询中调用它时,我得到了可怕的“查询中未定义的函数”错误。以下是我从我的查询中调用它的方法:color2:ItemColor([Color])。目的是获取库存ID并根据ID代码提取颜色。此函数最终将扩展为大量颜色(超过7),因此我无法在查询中使用iif函数。我想先用几种颜色选项来测试vba。

这是我的代码:

Public Sub ItemColor()

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

  Else
     MsgBox "shell"
  End If
End Sub

[颜色]是同一查询中的字段。 [颜色]是使用Mid函数从ID字段中提取的字符串。这个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 :(得分:1)

首先,您需要一个函数来返回一个值,这就是为什么错误表明未定义的函数。如果您想根据提供的数字硬编码返回值,请尝试以下代码:

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