標題:
執行階段錯誤'91':
[打印本頁]
作者:
hugh0620
時間:
2011-12-29 10:56
標題:
執行階段錯誤'91':
本帖最後由 hugh0620 於 2011-12-29 11:49 編輯
小弟在撰寫完程式碼後~ 執行發生了 執行階段錯誤'91': 的問題
已經有搜索過以前的文章~ 但是還是無法克服~
http://forum.twbts.com/viewthrea ... F9%BB%7E&page=1
文章中Hsieh大大說的部份~ 有檢查過~ 都有設定~
請大大們指導一下~
因為有些程式是照這樣的方式寫~ 執行時~ 有時沒有問題~ 有時又會出現錯誤訊息~
[attach]8951[/attach]
補提供一個範例~ 讓大大們進營測試
[attach]8953[/attach]
作者:
GBKEE
時間:
2011-12-29 15:24
回復
1#
hugh0620
Private Sub CommandButton1_Click()
Dim st1 As String, ed1 As String '宣告為字串
Dim B As Range, C As Range, a As Integer, i As Integer
a = Sheet3.Range("D65536").End(xlUp).Row '***Sheet4 D欄沒資料 A永遠是1
For i = 3 To A '*** A=1 不會執行迴圈
'月份1
If Sheet3.Range("AD" & i) = "" Then
GoTo 1
Else
If Sheet3.Range("AE" & i) = "" Then
st1 = Sheet3.Range("Z" & i) '傳回字串
ed1 = Sheet3.Range("AA" & i) '傳回字串
Else
st1 = Sheet3.Range("Z" & i) '傳回字串
ed1 = Sheet3.Range("AJ" & i) '傳回字串
End If
Set B = Sheet4.Columns("E").Find(st1, LookIn:=xlValues) 'LookIn:=xlValues 內容為字串
Set C = Sheet4.Columns("E").Find(ed1, LookIn:=xlValues)
If Not B Is Nothing And Not C Is Nothing Then 'B , C 皆須為Range(有找到)
Sheet3.Range("AS" & i) = Application.Sum(Sheet4.Range(B.Offset(, 1), C.Offset(, 1)))
End If
End If
1
Next
End Sub
複製代碼
作者:
hugh0620
時間:
2011-12-29 15:45
回復
2#
GBKEE
Dear G大大~
很感謝你的解答~
但~ 小弟還是有一些問題~ 想向您請教~
因為也資料格式(日期.常數.字串)會造成程式執行時產生錯誤~
所以~ 小弟在儲存格的日期格式上~ 其實有用date的方式讓相關的欄位都是用date的函數加以整合~
就是會發生錯誤~
看大大的解答是將日期轉成字串~ 再去查詢~
是否直接用日期查詢會有問題嘛??
還是以後遇到日期格式~ 先轉成字串~ 再去查詢比較沒問題??
作者:
GBKEE
時間:
2011-12-29 17:10
回復
3#
hugh0620
工作表上日期的搜尋,與儲存格的格式設定有關.
你的行事曆 E欄格式是自訂為文字, 修改為 日期格式 *2001/3/14 ,你的程式就可用了 .
作者:
hugh0620
時間:
2011-12-29 17:26
回復
4#
GBKEE
G大大~
其實後來小弟~ 在執行中~ 還是有執行上的錯誤~
也花了1~2HR才全部排除所有錯誤(有些是資料面使用者輸入錯誤的資料~ 有些是資料格式上的問題)~
大大是否其他相關日期用Find的使用想法~
例如: 資料的建立/格式尚的設定.....等等
作者:
lcc_seven
時間:
2012-1-3 18:02
我的習慣是使用Excel內建的資料驗證,可以限制使用者輸入的格式及範圍
如果不是特殊需求,應該是很夠用了
這樣一來,程式也不會吃到錯誤的資料格式,大大減少錯誤的發生機率
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)