VBA计算查询中多个字段的字段

时间:2018-02-21 23:31:00

标签: access-vba

我没有编写VBA代码的经验,但我可以遵循逻辑。

提前感谢大家的帮助!

我找到了一个计算查询中单个字段的VBA代码(参见图片)。因为我有10个字段,所以我需要创建10个单独的函数:nPP1SURFnPP2SURFnPP3SURF ...以nPP0SURF结尾。

我可以用一个功能完成这个吗?

Public Function UpdatePP1SURF(ByVal nPP1SURF As Integer) As String

    If nPP1SURF = 1 Then
        UpdatePP1SURF = "D"
    ElseIf nPP1SURF = 2 Then
        UpdatePP1SURF = "T"
    ElseIf nPP1SURF = 3 Then
        UpdatePP1SURF = "W"
    ElseIf nPP1SURF = 4 Then
        UpdatePP1SURF = "A"
    Else
        UpdatePP1SURF = "x"
    End If

    'Expr1: UpdatePP1SURF([nPP1SURF])

End Function

所有10个字段的逻辑是相同的。我见过的vba函数可以完成我想要的单词" array"在它。

BRILLIANT!作品很棒李麦克!!

我担心的是我的其他计算字段要复杂得多。我的原始函数更适合处理这些IIf语句吗?例如:

IIf([xPSHF2]之间([xPSHF_TOP] +1.1)和[xPSHF2]<([xPSHF_TOP] +10)," OR"," x")

非常感谢你帮助Lee Mac !!

我用谷歌搜索"访问选择案例陈述"我将开始更多地了解这种类型的编码。我看到有一个IF-THEN-ELSE声明。

干杯!

1 个答案:

答案 0 :(得分:0)

由于您已声明所有字段的逻辑相同,只需将每个字段传递给函数即可。

正如我的评论中所述,我首先建议使用Select Case声明:

Function UpdateSURF(ByVal mySURF As Integer) As String
    Select Case mySURF
        Case 1: UpdateSURF = "D"
        Case 2: UpdateSURF = "T"
        Case 3: UpdateSURF = "W"
        Case 4: UpdateSURF = "A"
        Case Else: UpdateSURF = "x"
    End Select
End Function

然后可以使用以下表达式对您的任何字段进行评估:

UpdateSURF([nPP1SURF])
UpdateSURF([nPP2SURF])
...
UpdateSURF([nPP0SURF])