If Not c Is Nothing Then語法
- 帖子
- 40
- 主題
- 13
- 精華
- 0
- 積分
- 69
- 點名
- 0
- 作業系統
- w7
- 軟體版本
- office07
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2012-4-24
- 最後登錄
- 2012-8-20
|
If Not c Is Nothing Then語法
這裡可能有溢位的問題... 我懷疑是不是If Not c Is Nothing Then語法我不會用的關係
不知道是不是像前篇發文大大所說變數資料型態設錯
下面有兩個sheets ,QS是從 order_pool抓出來的等待訂單
唯一不同的是 它已經符合某些需求才會放到QS表單中
希望我沒有表達的言不即意@@
============================================- '請問If Not c Is Nothing Then 用法
- Dim b As Variant
-
- b = Sheets("QS").Range(RR)
- For Each r In Worksheets("order_pool").Range("A1", Sheets("order_pool").Range("A1").End(xlDown))
- Set c = r.Find(b, , , xlWhole) '設定內容為b的儲存格物件為c
-
- If Not c Is Nothing Then Drr = c.Address
- '每找到C則將C的相對位址放進DRR
- Next
- Sheets("order_pool").Range(Drr).Delete '刪除從order pool取出之資料
複製代碼 檔案有點大 所以用DROPBOX連結
https://dl.dropbox.com/u/16247104/0715afternoon.xlsm |
|
|
|
|
|
|
- 帖子
- 472
- 主題
- 5
- 精華
- 0
- 積分
- 485
- 點名
- 0
- 作業系統
- Windows
- 軟體版本
- MS Office
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 香港
- 註冊時間
- 2010-7-4
- 最後登錄
- 2014-12-28

|
2#
發表於 2012-7-16 13:41
| 只看該作者
檔案裡面數據不齊全, 很難做測試.
是運行這個時有問題嗎? Sub Call_order_pool_Add_batch_pool_del_order_pool2()
Dim RR, Drr As String
Dim i, j, num_of_item, opA, OC As Integer
Dim r, c, b As Variant
先把i, j... 這些定義好類型, 很大機會是integer出問題
Dim i as long, j as long, num_of_item as long, OC As long |
|
|
|
|
|
|
- 帖子
- 559
- 主題
- 58
- 精華
- 0
- 積分
- 626
- 點名
- 0
- 作業系統
- win8
- 軟體版本
- office2013
- 閱讀權限
- 50
- 性別
- 男
- 來自
- TW
- 註冊時間
- 2010-11-22
- 最後登錄
- 2024-6-14
|
3#
發表於 2012-7-17 10:39
| 只看該作者
本帖最後由 hugh0620 於 2012-7-17 11:09 編輯
回復 1# m09903020
RR = Sheets("SAMRD").Cells(1, 3) <== 這一句帶出來的是[無]
這樣的寫法RR=Sheets("SAMRD").Cells(1, 3) 的內容
Sheets("SAMRD").Cells(1, 3)的內容就必須要是儲存格的寫法
才能套用到下一句
b = Sheets("QS").Range(RR) <=== run到這一句就是錯誤的
修改成以下的方式~ 可避免錯誤
If Sheets("SAMRD").Cells(1, 3) = "" Then Exit Sub '當Sheets("SAMRD").Cells(1, 3) = "" 跳出執行
RR = Sheets("SAMRD").Cells(1, 3)
b = Sheets("QS").Range(RR)
If Not c Is Nothing Then Drr = c.Address <====若這一句都沒執行到 Drr = c.Address
Sheets("order_pool").Range(Drr).Delete <====當Drr上面那一句是空的時候,這一句就會有錯誤產生- Sub Call_order_pool_Add_batch_pool_del_order_pool2()
- Dim RR, Drr As String
- Dim i, j, num_of_item, opA, OC As Integer
- Dim r, c, b As Variant
- RR = Sheets("SAMRD").Cells(1, 3) '(1,3)要幹嘛?Sheets("order_pool").[C1].Resize(s, 1) = Arr2
- b = Sheets("QS").Range(RR)
- Sheets("batch_order_pool").Cells(seed_counter, a_batch_followering_order_counter + 1) = Sheets("總訂單").Cells(b + 1, 1)
- OC = 100 - RC
- If (Sheets("總訂單").Cells(b + 1, 1) > 0) And (Sheets("總訂單").Cells(b + 1, 1) < 3001) Then
-
- num_of_item = 5
-
- ElseIf (Sheets("總訂單").Cells(b + 1, 1) >= 3001) And (Sheets("總訂單").Cells(b + 1, 1) < 6001) Then
-
- num_of_item = 10
- ElseIf (Sheets("總訂單").Cells(b + 1, 1) >= 6001) And (Sheets("總訂單").Cells(b + 1, 1) < 9001) Then '50 items
-
- num_of_item = 50
-
- Else
- MsgBox "error這麼九很奇怪ㄟ你"
- End If
- Call cal_RC(num_of_item)
-
- If RC >= 0 Then
-
- For j = 1 To num_of_item
-
- Sheets("batch_pool").Cells(seed_counter, OC + j) = Worksheets("總訂單").Cells(b + 1, j + 6)
-
- Next
- For Each r In Worksheets("order_pool").Range("A1", Sheets("order_pool").Range("A1").End(xlDown))
- Set c = r.Find(b, , , xlWhole) '設定內容為b的儲存格物件為c
-
- If Not c Is Nothing Then Drr = c.Address
- '每找到C則將C的相對位址放進DRR
- Next
-
- Sheets("order_pool").Range(Drr).Delete '刪除從order pool取出之資料
-
- End If
-
- End Sub
複製代碼 |
|
學習才能提升自己
|
|
|
|
|
- 帖子
- 40
- 主題
- 13
- 精華
- 0
- 積分
- 69
- 點名
- 0
- 作業系統
- w7
- 軟體版本
- office07
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2012-4-24
- 最後登錄
- 2012-8-20
|
4#
發表於 2012-7-19 01:08
| 只看該作者
檔案裡面數據不齊全, 很難做測試.
是運行這個時有問題嗎? Sub Call_order_pool_Add_batch_pool_del_order_ ...
kimbal 發表於 2012-7-16 13:41 
謝謝大大, 溢位的問題我找了好幾天才發現是程式執行邏輯上的錯誤,在orderpool 最後一筆資料的判斷出了包 |
|
|
|
|
|
|
- 帖子
- 40
- 主題
- 13
- 精華
- 0
- 積分
- 69
- 點名
- 0
- 作業系統
- w7
- 軟體版本
- office07
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2012-4-24
- 最後登錄
- 2012-8-20
|
5#
發表於 2012-7-19 01:27
| 只看該作者
回復 3# hugh0620
謝謝大大,我用了您的程式改過,這樣問題減少許多,
然後我又發現row.count的原先程式碼,用來計算order pool 列數量有誤, 改成rows 就少了一些問題產生 |
|
|
|
|
|
|