返回列表 上一主題 發帖

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

回復 1# HSIEN6001
、
這是特殊字元 程式理修改為  ,  逗點
   
  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 = "" Or j = 0 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             '是數字且 未輸入 格式 1、2、3...
  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

回復 7# HSIEN6001
請修正  i = Application.CountA(Range("C:C"))-1   減掉 C1的 "英文"  就可以

TOP

        靜思自在 : 有時當思無時苦,好天要積雨來糧。
返回列表 上一主題