我没有编写VBA代码的经验,但我可以遵循逻辑。
提前感谢大家的帮助!
我找到了一个计算查询中单个字段的VBA代码(参见图片)。因为我有10个字段,所以我需要创建10个单独的函数:nPP1SURF
,nPP2SURF
,nPP3SURF
...以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声明。
干杯!
答案 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])