- 帖子
- 2
- 主題
- 1
- 精華
- 0
- 積分
- 7
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Office 2013
- 閱讀權限
- 10
- 性別
- 女
- 註冊時間
- 2016-7-27
- 最後登錄
- 2016-8-30

|
[發問] 有關"執行階段錯誤13 型態不符合"問題
本帖最後由 waterful 於 2016-8-29 14:24 編輯
以下是自己寫的非常陽春的比對新舊單號程式,出問題的在1那行,若改成Find(..., after:=wsh2.Cells(3, 1))則不會出現此錯誤,但程式效率差很多!!
有試著將i, j的型態改為byte, long, single, double, integer, variant等等皆無法改善, 爬了文發現出現此錯誤訊息的原因不一定是因為type定義問題,不知道有哪位大大可以幫我解答,謝謝。
PS.此錯誤出現後,只要將錯誤點掉"停止執行",仍然會跑出想要的資料,只是每次執行到一半都需點掉,所以感到很困擾!!
未完工維修單.rar (14.43 KB)
- Sub 剩餘維修單()
- Dim wsh1 As Worksheet, wsh2 As Worksheet
- Dim rngNew As Range
- Dim row1 As Long, row2 As Long
- Dim i As Double, j As Double
-
- Set wsh1 = Sheets("未完工維修單")
- Set wsh2 = Sheets("list_toexcel")
- row1 = wsh1.[B2].End(xlDown).Row
- row2 = wsh2.[A3].End(xlDown).Row
- Set rngNew = wsh2.Range("A3:A" & row2)
-
- j = 3
-
- 'step1.比對舊維修單號是否存在 , 找不到則將此行刪除
- With wsh1
- For i = 2 To row1 Step 1
- '比對新維修單是否存在,找不到則將舊維修單殺掉
- 1: If rngNew.Find(.Cells(i, 2), after:=wsh2.Cells(j, 1)) Is Nothing Then
-
- .Cells(i, 2).Offset(0).EntireRow.Delete
- '舊維修單刪除一行後,行數少1
- row1 = row1 - 1
- '新維修單少比對一行,以增加程式效率
- j = j + 1
- row2 = row2 - 1
- '改善刪除一行後,程式改從下一行開始比對
- GoTo 1
-
- End If
-
- Next
-
- End With
- End Sub
複製代碼 |
|