- 帖子
- 219
- 主題
- 24
- 精華
- 0
- 積分
- 243
- 點名
- 0
- 作業系統
- Windows10
- 軟體版本
- Office2016
- 閱讀權限
- 20
- 性別
- 女
- 註冊時間
- 2012-4-18
- 最後登錄
- 2022-2-7
 
|
7#
發表於 2012-4-26 16:41
| 只看該作者
回復 4# GBKEE
G大 ,不好意思!
我還不懂陣列,所以找不出為何輸入10 會直接退出
第10列無資料,判別應該在" 超出範圍"
我找不出改哪裡可避開無資料的第一筆~~哭~~- Sub SpeEnginBox()
- Dim i, j, AA, Ar, E
- i = Application.CountA(Range("C:C"))
- If i = 1 Then
- MsgBox "範圍內無英文語句", 16
- Exit Sub
- End If
- AA:
- j = InputBox("請問你要唸第幾句?" & vbNewLine & "(格式 1 ,2 ,3...)", , "")
- Ar = Array(j) '將 J 轉入陣列
- If j = "" Then
- If MsgBox("您未輸入任何數字,停止輸入 !!! ", vbYesNo) = vbYes Then Exit Sub
- GoTo AA
- ElseIf InStr(j, ",") Then '有輸入 格式 1,2,3...
- Ar = Split(j, ",") '將 J 轉入陣列
- For Each E In Ar '依序處裡 陣列的元素
- If Val(E) < 1 Or Val(E) > i Then '1 到 J 之間
- MsgBox "超出範圍", 16
- GoTo AA
- End If
- Next
- ElseIf InStr(j, ",") = 0 And IsNumeric(j) Then '是數字且 超出有資料範圍---->這裡有i+1 標題列算進去的考量
- If Val(j) <= 0 Or Val(j) > i Then
- MsgBox "超出範圍", 16
- GoTo AA
- End If
- ElseIf InStr(j, ",") = 0 And Not IsNumeric(j) Then '不是數字且 '未輸入 格式 1,2,3...
- MsgBox "輸入錯誤!", 16
- GoTo AA
- End If
- Set oSa = CreateObject("SAPI.SpVoice")
- For E = 0 To UBound(Ar) 'E為 陣列的數值
- oSa.Volume = 100
- oSa.Rate = -1
- oSa.Speak Cells(Ar(E) + 1, 3)
- If E < UBound(Ar) Then If MsgBox("「Continue?」 Next (" & Ar(E + 1) & " )", vbYesNo) <> vbYes Then Exit Sub
- Next
- End Sub
複製代碼 |
|