Vba 单击事件时的MS Access if语句
我使用的是Ms Access表单,我创建了一个单击事件,用于定位文件夹位置,但现在我想根据不同的条件定位文件夹位置,但当我添加if语句时,它需要子、函数或属性。下面是一些演示代码。我真的希望有人能解释一下遗漏了什么Vba 单击事件时的MS Access if语句,vba,ms-access,Vba,Ms Access,我使用的是Ms Access表单,我创建了一个单击事件,用于定位文件夹位置,但现在我想根据不同的条件定位文件夹位置,但当我添加if语句时,它需要子、函数或属性。下面是一些演示代码。我真的希望有人能解释一下遗漏了什么 Private Sub Open_Email_Click() Dim stAppName As String Dim stAppNameA As String Dim stAppNameB As String stAppName = "C:\
Private Sub Open_Email_Click()
Dim stAppName As String
Dim stAppNameA As String
Dim stAppNameB As String
stAppName = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\B " & Me.BC & " " & Me.UC & "\"
stAppNameA = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\A\B " & Me.BC & " " & Me.UC & "\"
stAppNameB = "C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & " DEMO\B\B " & Me.BC & " " & Me.UC & "\"
If (Me.BC = "60") And Me.UC Like "REF123*" Then stAppNameA
ElseIf (Me.BC = "60") And Not Me.UC Like "REF123*" Then stAppNameB
Else: stAppName
End If
Call Shell(stAppName, 1)
End Sub
我认为您的
If
块在换行符和连续字符(:)的位置上有点混乱。尝试按如下方式重新格式化代码:
If (Me.BC = "60") And Me.UC Like "REF123*" Then
stAppName =stAppNameA
ElseIf (Me.BC = "60") And Not Me.UC Like "REF123*" Then
stAppName = stAppNameB
Else
stAppName =stAppName
End If
Call Shell(stAppName, 1)
我认为您的
If
块在换行符和连续字符(:)的位置上有点混乱。尝试按如下方式重新格式化代码:
If (Me.BC = "60") And Me.UC Like "REF123*" Then
stAppName =stAppNameA
ElseIf (Me.BC = "60") And Not Me.UC Like "REF123*" Then
stAppName = stAppNameB
Else
stAppName =stAppName
End If
Call Shell(stAppName, 1)
我认为您的函数逻辑可以简化为以下内容,使用更少的重复表达式可能更具可读性:
Private Sub Open_Email_Click()
Dim strTmp As String
If Me.BC = "60" Then
If Me.UC Like "REF123*" Then
strTmp = " DEMO\A\B "
Else
strTmp = " DEMO\B\B "
End If
Else
strTmp = " DEMO\B "
End If
Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub
或者,使用Select Case
语句:
Private Sub Open_Email_Click()
Dim strTmp As String
Select Case True
Case Me.BC <> "60"
strTmp = " DEMO\B "
Case Me.UC Like "REF123*"
strTmp = " DEMO\A\B "
Case Else
strTmp = " DEMO\B\B "
End Select
Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub
致:
我认为您的函数逻辑可以简化为以下内容,使用更少的重复表达式可能更具可读性:
Private Sub Open_Email_Click()
Dim strTmp As String
If Me.BC = "60" Then
If Me.UC Like "REF123*" Then
strTmp = " DEMO\A\B "
Else
strTmp = " DEMO\B\B "
End If
Else
strTmp = " DEMO\B "
End If
Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub
或者,使用Select Case
语句:
Private Sub Open_Email_Click()
Dim strTmp As String
Select Case True
Case Me.BC <> "60"
strTmp = " DEMO\B "
Case Me.UC Like "REF123*"
strTmp = " DEMO\A\B "
Case Else
strTmp = " DEMO\B\B "
End Select
Call Shell("C:\Windows\explorer.exe C:\DEMO\TEST\" & Me.Office & strTmp & Me.BC & " " & Me.UC & "\", 1)
End Sub
致:
Lee这是一种更干净的方法,我尝试过使用它,但它并不是只为了演示\B\B而打开到新位置的文件路径。在代码中还有BD,我认为它应该是BC。@new2编程很好!我现在已经更正了
BD
typo.@new2程序错误已经纠正,代码现在运行成功了吗?我现在没有收到错误,但是文件夹位置没有打开到正确的位置,并且只打开到我的文档而不是实际的文件夹,我有位置名称,但好像缺少了什么。我可以在控制台中打印位置名称以查看事件试图查找的位置吗?谢谢Lee,它工作得很好,解决了问题:)Lee这是一种更干净的方法,我尝试过使用它,但它不会打开到新位置的文件路径,只是为了演示\B\B。此外,在您的代码中有BD,我认为它应该是BC。@new2编程很好!我现在已经更正了BD
typo.@new2程序错误已经纠正,代码现在运行成功了吗?我现在没有收到错误,但是文件夹位置没有打开到正确的位置,并且只打开到我的文档而不是实际的文件夹,我有位置名称,但好像缺少了什么。我可以在控制台中打印出位置名称以查看事件试图查找的位置吗?感谢Lee,它非常有效,并解决了问题:)