返回列表 上一主題 發帖

利用Find找日期,出現錯誤!!

回復 10# hugh0620
Application.CountA([AB10:AM10000])=0,沒有資料,當然Find(K)找不到
  1. For K = MS01 To ME02
  2. MsgBox Application.CountA([AB10:AM10000])
  3. Set C = 工作表7.Range("AB10:AM10000").Find(K)
  4.     TE01 = C.Offset(0, 0).Row
  5. DS = 0
  6.     For L = A To B
  7.    
  8.         If Range("I" & L) = K Then
  9.            DS = DS + Range("O" & L)
  10.         End If
  11.     Next
  12. 1
  13.     C.Offset(1, 0) = DS
  14.     D = D + 1
  15. Next
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

加入 is nothing
Set A = Sheets("行事曆").Range("G3:G10000").Find(ST)
If A Is Nothing Then
    '自行加入找不到ST這個字串或數字時的動作
Else
    A = A.Offset(0, 0).Row
End If

TOP

回復 10# hugh0620

誠如GBKEE超級版主所言,
Find之所以出現問題,
是因為你尋找的範圍沒有資料,
Find找不到你變數K的值,
你應該要修改一下[AB10:AM10000]的範圍。

另外,你Find的值導向 TE01 這個變數,
但是這個變數再後面也都沒有再出現,
所以是有點摸不著頭緒。

如果你需要其他協助,
建議你可以把你的整個邏輯跟目的跟版上熱心大大們分享,
我相信你可以得到很好的回饋的!

祝你順心 : )

TOP

回復 13# a5007185


      嗨!! 你可能誤解了, 提供的檔案,是針對我一開始PO的文,
              A、B的部分在執行的過程中產生錯誤,而非去討論下半段資料的範圍。
              A、B的資料是有的,但還是發生錯誤。
              因為,在每次撰寫FIND時,這個問題一直重複性的發生。
              
              下半段的部分,只是最初我在測試統計區間資料時,在同一個SHEET做簡單的模擬,
              後來,工具做好後,沒有再去修正這個部分!!
              
              其實設計的邏輯,就如同程式碼的內容,主要是:統計區間的工作天數!!         
              後害塞到每一筆資料中(開始日、結束日)。 這個部分就下是半段的部分,這個是沒有問題的!!
學習才能提升自己

TOP

回復 14# hugh0620

抱歉,我稍微整理以上各位大大表述的意見。

Find函數如果該範圍找不到你的目標的時候,
函數會回饋「Nothing」,
而既然Set A = Nothing,
當然A就不會有Row的屬性,
所以程式才會跳錯,
這就是你問題的所在。

所以為了避免這個問題,
在執行 A = A.Offset(0, 0).Row 之前先檢查A是否存在,
若不存在則跳出訊息並停止程式運作。
  1. Set A = 工作表7.Range("G3:G10000").Find(ST)
  2. If A Is Nothing Then
  3.     MsgBox "A部分輸入的日期不存在": Exit Sub
  4. Else
  5.     A = A.Offset(0, 0).Row
  6. End If

  7. Set B = 工作表7.Range("G3:G10000").Find(ED)
  8. If B Is Nothing Then
  9.     MsgBox "A部分輸入的日期不存在": Exit Sub
  10. Else
  11.     B = B.Offset(0, 0).Row
  12. End If
複製代碼

TOP

回復 12# doom834


          嗨,謝謝你的提醒, 不加入is nothing 是故意的,
                  為什麼不加入,由於,在計算生產的負載情況,不能計算錯誤,
                  情願讓程式在跑時候,發現錯誤,無法執行下去,使用者就會反應!!
學習才能提升自己

TOP

回復 15# a5007185

          嗨!!    可能還是沒有清楚提問的問題!!
                  
                   問題點:資料有,但卻發生找不到資料的問題。
                  
                   而非是探討,資料沒有時的處置!!
學習才能提升自己

TOP

了解A 是否有物件:
Set A = ......
if not A is Nothing then  ..........

TOP

FIND_的應用問題_已經修正.zip (104.04 KB)
                              
                               同一樣的檔案,相同A、B的設定,下半段做了小調整,整個程式是可以被執行的。
                               但我還是不能理解的是,為什麼當初A、B會出現Nothing (但資料上明明有),
                               我後來的處理是,把
                                Set A = 工作表7.Range("G3:G10000").Find(ST)   <=不動
                                       A = A.Offset(0, 0).Row             <=A改成A01,A01 = A.Offset(0, 0).Row
                               重新RUN,就可以RUN,A也沒有再發生Nothing的情況。
                               然後,A01 = A.Offset(0, 0).Row 又改回A = A.Offset(0, 0).Row
                               試著在run,也沒有發生問題。
                              
                               雖是,問題被解決,但我還是不了解,到底是怎麼回事,
                               是哪個環節、或是設定上的需要如何調整!!
                               這是我疑惑的地方,有請大大指教!!
學習才能提升自己

TOP

回復 17# hugh0620
G欄資料格式是自訂而非日期,Find時會當成字串來比,但你傳入Find的ST是Date,所以找不到。
要嘛傳入ST前再format轉成字串
要嘛G欄格式都改日期
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題