返回列表 上一主題 發帖

[發問] 請問迴圈及對話框

[發問] 請問迴圈及對話框

本帖最後由 HSIEN6001 於 2012-4-26 14:52 編輯

唉!好丟臉喔!
可以幫我看看迴圈語法?!
  1. Sub SpeEnginBox()
  2. Dim i, j, AA
  3.     i = Application.CountA(Range("C:C"))
  4.     If i = 1 Then
  5.         MsgBox "範圍內無英文語句", 16
  6.         Exit Sub
  7.         Else
  8. AA:
  9.     Application.ScreenUpdating = False
  10.     j = InputBox("請問你要唸第幾句?" & vbNewLine & "(格式 1、2、3...)", , "")
  11.         If j = "" Then
  12.             MsgBox "您未輸入任何數字", 16
  13.             GoTo AA
  14.             Else
  15.             If j = 0 Then
  16.                 MsgBox "超出範圍", 16
  17.             GoTo AA
  18.                 Else
  19.                 If j > i Then      '--->請問這裡語法該怎麼下?
  20.                 MsgBox "超出範圍", 16
  21.                 GoTo AA
  22.                 Else
  23.                 End If
  24.             End If
  25.         End If
  26.         
  27.     Application.DisplayAlerts = False
  28.     Set oSa = CreateObject("SAPI.SpVoice")
  29.     oSa.Volume = 100
  30.     oSa.Rate = -1
  31.     oSa.Speak Cells(j + 1, 3)
  32.         
  33.     End If
  34. End Sub


  35.         '另外:如果對話框按取消,則語法該如何下,才會離開迴圈;不顯示錯誤
  36.         'If InputBox(「Continue?」,vbYesNo)<>vbYes Then Exit Sub  
複製代碼
迴圈問題.rar (17.53 KB)


如果拿掉 j>i 判讀 ;程式是可以跑
但我想加入那個判讀
  1. Sub SpeEnginBox()
  2. Dim i, j, AA
  3.     i = Application.CountA(Range("C:C"))
  4.     If i = 1 Then
  5.         MsgBox "範圍內無英文語句", 16
  6.         Exit Sub
  7.         Else
  8. AA:
  9.     Application.ScreenUpdating = False
  10.     j = InputBox("請問你要唸第幾句?" & vbNewLine & "(格式 1、2、3...)", , "")
  11.         If j = "" Then
  12.             MsgBox "您未輸入任何數字", 16
  13.             GoTo AA
  14.             Else
  15.             If j = 0 Then
  16.                 MsgBox "超出範圍", 16
  17.             GoTo AA
  18.                 Else
  19.             End If
  20.         End If
  21.         
  22.     Application.DisplayAlerts = False
  23.     Set oSa = CreateObject("SAPI.SpVoice")
  24.     oSa.Volume = 100
  25.     oSa.Rate = -1
  26.     oSa.Speak Cells(j + 1, 3)
  27.         
  28.     End If
  29.     Application.ScreenUpdating = True
  30. End Sub
複製代碼

回復 2# kevin681024

你好!謝謝~^^
j = IIf(IsNumeric(j), CInt(j), j)--->會出現偵錯

TOP

回復 4# GBKEE


    G大 ,不好意思!
我還不懂陣列,所以找不出為何輸入10 會直接退出
第10列無資料,判別應該在" 超出範圍"
我找不出改哪裡可避開無資料的第一筆~~哭~~
  1. Sub SpeEnginBox()
  2.     Dim i, j, AA, Ar, E
  3.     i = Application.CountA(Range("C:C"))
  4.     If i = 1 Then
  5.         MsgBox "範圍內無英文語句", 16
  6.         Exit Sub
  7.     End If
  8. AA:
  9.     j = InputBox("請問你要唸第幾句?" & vbNewLine & "(格式 1 ,2 ,3...)", , "")
  10.      Ar = Array(j)                                  '將 J 轉入陣列
  11.      If j = "" Then
  12.             If MsgBox("您未輸入任何數字,停止輸入 !!! ", vbYesNo) = vbYes Then Exit Sub
  13.             GoTo AA
  14.     ElseIf InStr(j, ",") Then                               '有輸入 格式 1,2,3...
  15.         Ar = Split(j, ",")                                  '將 J 轉入陣列
  16.         For Each E In Ar                                    '依序處裡 陣列的元素
  17.             If Val(E) < 1 Or Val(E) > i Then              '1 到 J 之間
  18.                 MsgBox "超出範圍", 16
  19.                 GoTo AA
  20.             End If
  21.         Next
  22.     ElseIf InStr(j, ",") = 0 And IsNumeric(j) Then             '是數字且 超出有資料範圍---->這裡有i+1 標題列算進去的考量
  23.         If Val(j) <= 0 Or Val(j) > i Then
  24.             MsgBox "超出範圍", 16
  25.             GoTo AA
  26.         End If
  27.     ElseIf InStr(j, ",") = 0 And Not IsNumeric(j) Then          '不是數字且 '未輸入 格式 1,2,3...
  28.         MsgBox "輸入錯誤!", 16
  29.         GoTo AA
  30.     End If
  31.     Set oSa = CreateObject("SAPI.SpVoice")
  32.     For E = 0 To UBound(Ar)                                            'E為 陣列的數值
  33.         oSa.Volume = 100
  34.         oSa.Rate = -1
  35.         oSa.Speak Cells(Ar(E) + 1, 3)
  36.        If E < UBound(Ar) Then If MsgBox("「Continue?」 Next (" & Ar(E + 1) & " )", vbYesNo) <> vbYes Then Exit Sub
  37.     Next
  38. End Sub
複製代碼

TOP

回復 5# kevin681024


    謝謝你!別這樣說
我很外行,有RUN看看
也有刪掉其中幾個試試!

就是沒法找到答案,您肯花心力幫我解答~真的感謝!

TOP

回復 6# oobird


    原來2007有提供這樣的服務
對于我這種外行才會在這裡∼∼〔瞎〕快樂!

藉由這樣給自己功課,才會找到許多解決問題的方法
真的是練習!

承蒙大家不吝教學!
謝謝!

TOP

本帖最後由 HSIEN6001 於 2012-4-26 17:10 編輯

回復 10# GBKEE

我才剛剛找到位置^^!!
        ElseIf InStr(j, ",") = 0 And IsNumeric(j) Then  '是數字且超出有資料範圍---->這裡有i 標題列算進去的考量
        If Val(j) <= 0 Or Val(j) > i - 1 Then

謝謝G大!
繼續消化語法中
真希望有多啦ㄟ夢的記憶吐司^^!!

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題