Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows VbScript使计算机说出错误_Windows_Vbscript_Speech - Fatal编程技术网

Windows VbScript使计算机说出错误

Windows VbScript使计算机说出错误,windows,vbscript,speech,Windows,Vbscript,Speech,我有一个文件,可以让电脑说话。我希望它与VbCancel函数循环。我得到这个错误。迄今为止的代码: Do 模糊的信息,说话 消息=输入框(“输入文本”、“说话”) 设置Speak=CreateObject(“sapi.spvoice”) MsgBox(“您输入:”&Speak) 说,说留言 如果Len(Speak)=0,则 MyMessageBox=MsgBox(“如果要取消,请单击“是”。&vbCrLf&_ “如果要输入长度为零的字符串,请单击“否”,vbYesNo,“是否要取消?”) 如果M

我有一个文件,可以让电脑说话。我希望它与VbCancel函数循环。我得到这个错误。迄今为止的代码:

Do
模糊的信息,说话
消息=输入框(“输入文本”、“说话”)
设置Speak=CreateObject(“sapi.spvoice”)
MsgBox(“您输入:”&Speak)
说,说留言
如果Len(Speak)=0,则
MyMessageBox=MsgBox(“如果要取消,请单击“是”。&vbCrLf&_
“如果要输入长度为零的字符串,请单击“否”,vbYesNo,“是否要取消?”)
如果MyMessageBox=vbYes,则
MsgBox“操作已取消”
出口接头
如果结束
环
顺便说一句,错误是无效的退出语句
我在用Windows7

Dim Message, Speak

Do
    Message=InputBox("Enter text","Speak")
    Set Speak=CreateObject("sapi.spvoice")
    MsgBox ("You entered: " & Message)
    Speak.Speak Message
    If Len(Message) = 0 Then
        MyMessageBox = MsgBox("Click Yes if you mean to Cancel." & vbCrLf & _
                       "If you mean to enter a zero length string, click No.", vbYesNo, "DO YOU MEAN TO CANCEL?")
            If MyMessageBox = vbYes Then
                MsgBox "Operation Cancelled"
                Exit Do
            End If
    End If
Loop
你这里有几个问题

  • Exit Sub
    用于子程序。您试图退出
    Do
    循环
  • Speak
    是一个对象。我不知道它是否有字符串属性,但它本身不是字符串。
    Len(Speak)
    和您输入的
    :“&Speak
    Speak
    更改为
    Message
  • 如果
  • 我把模糊的陈述从循环中去掉了。一次又一次地重新创建对象没有意义
    您的Dim应该在环路之外。如果不是这样做的话,你的第一个“如果”就没有尽头。
    Dim Message, Speak
    
    Do
        Message=InputBox("Enter text","Speak")
        Set Speak=CreateObject("sapi.spvoice")
        MsgBox ("You entered: " & Message)
        Speak.Speak Message
        If Len(Message) = 0 Then
            MyMessageBox = MsgBox("Click Yes if you mean to Cancel." & vbCrLf & _
                           "If you mean to enter a zero length string, click No.", vbYesNo, "DO YOU MEAN TO CANCEL?")
                If MyMessageBox = vbYes Then
                    MsgBox "Operation Cancelled"
                    Exit Do
                End If
        End If
    Loop
    
    Dim Message, Speak
    
    Do
        Message=InputBox("Enter text","Speak")
        Set Speak=CreateObject("sapi.spvoice")
        MsgBox ("You entered: " & Message)
        Speak.Speak Message
        If Len(Message) = 0 Then
            MyMessageBox = MsgBox("Click Yes if you mean to Cancel." & vbCrLf & _
                           "If you mean to enter a zero length string, click No.", vbYesNo, "DO YOU MEAN TO CANCEL?")
                If MyMessageBox = vbYes Then
                    MsgBox "Operation Cancelled"
                    Exit Do
                End If
        End If
    Loop