VbScript заставляет компьютер сказать что-то об ошибке

У меня есть этот файл, который заставляет компьютер что-то сказать. Я хочу, чтобы он зацикливался с функцией VbCancel. Я получаю эту ошибку. Код пока:

Do
    Dim Message, Speak
    Message=InputBox("Enter text","Speak")
    Set Speak=CreateObject("sapi.spvoice")
    MsgBox ("You entered: " & Speak)
    Speak.Speak Message
    If Len(Speak) = 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 Sub
            End If
Loop
Кстати, ошибка: неверный оператор выхода
Я работаю над Windows 7.


person MineCMD    schedule 30.10.2014    source источник
comment
Ваш Dim должен быть вне цикла. Ваше первое «если» не имеет конца «если»   -  person Matt    schedule 30.10.2014


Ответы (2)


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

У вас было несколько проблем здесь

  1. Exit Sub для подпрограмм. Вы пытались выйти из цикла Do
  2. Speak является объектом. Я не знаю, есть ли у него строковое свойство, но оно само по себе не является строкой. И Len(Speak), и "You entered: " & Speak изменили Speak на Message.
  3. Вы пропустили End If
  4. Я переместил операторы Dim из цикла. Нет смысла воссоздавать объект снова и снова.
person Matt    schedule 30.10.2014

person    schedule
comment
Это не способ сделать это. - person Ekkehard.Horner; 07.01.2017