gpt4 book ai didi

vba - 函数总是返回 False。为什么?

转载 作者:行者123 更新时间:2023-12-05 00:25:51 25 4
gpt4 key购买 nike

我为 ThisOutlookSession 的每个邮件项目都有一个 VBA 脚本并忽略与我当前问题无关的代码部分,我正在调用以下函数:

Function WriteBatFile(inVar As String) As Boolean
On Error GoTo err_handle:

Dim sFile As String
sFile = "C:\Users\ME\Desktop\myScript.bat"

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Set oFile = fso.CreateTextFile(sFile)

oFile.WriteLine "sleep 2"
oFile.WriteLine "./myScript.sh " & inVar
oFile.WriteLine "exit"
oFile.Close

Set fso = Nothing
Set oFile = Nothing

'MsgBox "Setting True", vbInformation
WriteBatFile = True

err_handle:
'MsgBox "Setting false. Code: "
WriteBatFile = False
Exit Function
End Function

我调用这个函数并测试它是否返回 TrueFalse因此:
result = WriteBatFile(match.Value)
If result = True Then
retval = Shell("""C:\Program Files (x86)\PuTTY\plink.exe"" -ssh ME@MYSERVER -m C:\Users\ME\Desktop\runThese.bat", vbNormalFocus)
End If

但是,当该函数被调用时 MsgBox显示正在设置 True然后另一个 MsgBox显示功能正在设置 False .也许问题是线路 WriteBatFile = True ?

当然, Shell命令永远不会运行。我需要你的帮助,告诉我为什么?

谢谢你。

最佳答案

您的 err_handle只是一个标签声明,它所做的只是告诉编译器 X 行被称为 err_handleGoTo声明。没有什么可以阻止代码直接通过它。解决问题的最佳方法是移动行 Exit Function设置后立即到WriteBatFile为真。所以固定代码将如下所示:

'MsgBox "Setting True", vbInformation
WriteBatFile = True
Exit Function

err_handle:
'MsgBox "Setting false. Code: "
WriteBatFile = False
End Function

err_handle之后 WriteBatFile设置为 False,程序会在到达 End Function 时自然退出函数。 .我希望这有帮助!

关于vba - 函数总是返回 False。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23544530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com