【问题标题】:VBA function won't work in sql query: undefined function in queryVBA 函数在 sql 查询中不起作用:查询中未定义的函数
【发布时间】:2018-06-04 03:04:01
【问题描述】:

我是 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

[Color] 是同一查询中的字段。 [Color] 是使用 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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 我是 VBA 新手,所以选择案例对我来说是新的。它看起来是我的问题的更好解决方案。 getColor(colorID) 语句,是否应该引用我的 colorID 字符串所在的字段?
    • 如果您在驱动器位置发布您的数据库样本,我可以找到它,我可以查看您的表格并提供更深入的解决方案。
    • 我试过了,效果很好!耶!感谢您分享您的专业知识。
    猜你喜欢
    • 1970-01-01
    • 2015-02-24
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多