Board logo

標題: [發問] 請修正程式碼的錯誤。謝謝 ! [打印本頁]

作者: papaya    時間: 2019-12-22 08:29     標題: 請修正程式碼的錯誤。謝謝 !

本帖最後由 papaya 於 2019-12-22 08:32 編輯

測試用檔 : [attach]31570[/attach]
'-抓日期,號碼填黃色和字顏---------------------------------  列641
    Set BK = ThisWorkbook         '列642'
         Set xF = Nothing
    T = Format(Left(Right(A, 15), 10), "yyyy/m/d") & ChrW(160) '搜尋檔案日期
    Set xF = BK.Sheets("DATA").Range("A:A").Find(T, Lookat:=xlPart) '搜尋=A欄日期
If Not xF Is Nothing Then
   For V = 4 To 10
       For Each AD In Array("B77:AX77", "B83:AX83", "B88:K97", "Q88:Z97", "BB88:BK97", "BO88:BX97")
           If xF(2, V) <> "" Then
              Set FF = Range(AD & "").Find(xF(2, V), Lookat:=xlWhole)
              If Not FF Is Nothing Then FF.Interior.ColorIndex = IIf(V = 10, 8, 6)
           End If
       Next
   Next V                        '列654
End If                           '列655

上列的程式碼是直接複製列373~列387的程式碼貼上,但執行後,Sheets(1)工作表的標示的底色全對
可是,"前三小"工作表的標示
有的全對(EX︰49_尾數排序-排數總覽-(2019-11-01)-OK)
有的會產生錯誤的底色標示(49_尾數排序-排數總覽-(2019-11-22)-NG);(49_尾數排序-排數總覽-(2019-11-26)-NG)

顯然直接複製Sheets(1)工作表的列373~列387程式碼套用到"前三小"工作表是錯誤的舉措。
請問︰列642~列655的程式碼要如何修正 ?
謝謝 !
作者: 准提部林    時間: 2019-12-22 10:19

程式碼太複雜, 讀起來太吃力,
實在無法測試及修正~~
作者: papaya    時間: 2019-12-22 11:23

本帖最後由 papaya 於 2019-12-22 11:25 編輯

回復 2# 准提部林

版主 : 您好!
不好意思,打擾您的假日休息時間。
我再想辦法作簡短且有效的說明!
謝謝您
作者: papaya    時間: 2019-12-22 12:24

本帖最後由 papaya 於 2019-12-22 12:37 編輯

回復 2# 准提部林

版主 :您好!
整理如下__
1_Sheets(1)和"前3小!"的內容都相同,只是Sheets(1)公式都是比大,"前3小"工作表的公式都是比小。

2_列374~列387是=
當Sheets(1)的"B77:AX77", "B83:AX83", "B88:K97", "Q88:Z97", "BB88:BK97", "BO88:BX97"等儲存格的數字有顯示在指定的日期的下1期時,則將該數字標示黃色或淺藍色。

3_列641~列654是=
當"前3小!"的"B77:AX77", "B83:AX83", "B88:K97", "Q88:Z97", "BB88:BK97", "BO88:BX97"等儲存格的數字有顯示在指定的日期的下1期時,則將該數字標示黃色或淺藍色。

我的拙思是~
因為列641~列654的程式碼是由完全複製列374~列387的程式碼而來,
所以是不是列641~列654的某些變數沒有先歸0(=Nothing),因此才只有"前3小"會產生Bug?

我的另1個拙思是~
列641~列654的程式碼重新編寫,變數不要與列374~列387相同,以利二段程式碼不會產生衝突。

以上的"拙思"是否可行?
能否勞駕您指導一下?
謝謝您:)

PS : 還是問題的產生~同如http://forum.twbts.com/thread-22143-1-1.html類似?
作者: papaya    時間: 2019-12-22 12:52

本帖最後由 papaya 於 2019-12-22 13:02 編輯

回復 2# 准提部林
PS : 還是問題的產生~同如http://forum.twbts.com/thread-22143-1-1.html類似?
我的意思是 :
是不是又是因為某變數=Nothing,所以程式碼才會產生Bug !?

因為所有的運算公式都轉成純值了,所以我猜想應該是與公式無關。

勞駕您了!再次謝謝您!
作者: papaya    時間: 2019-12-22 22:36

回復 2# 准提部林
版主 :您好!
剛剛將xF,FF,AD改成xK,KK,AK(變數宣告也作了),但執行結果竟然完全一樣沒變^^"
雖然對VBA語法完全是門外漢,但實在不解為什麼執行的儲存格範圍完全相同,執行的標的性質也都是一樣的純值,只有工作表不同,
以列374~列387的程式碼=列641~列654的程式碼來執行,卻是會前段正確有效,後段會有問題?
沒轍了!放棄了!
打擾您了!謝謝您^^
作者: papaya    時間: 2019-12-23 10:49

回復 2# 准提部林
測試檔 : [attach]31571[/attach]
版主大大︰您好!
備註︰
1_有儘量將不必要的程式碼移除了^^
2_有儘量加註文字說明。

不好意思,小弟能否向您請教Shee1的1個先前沒有發現的小問題︰
列178~列191標示底色的程式碼,目前對搜尋到的標的數字有重複時,
只能標示的第1個數字,之後有重複的第2個相同數字不會標示。
EX︰
49_尾數排序-排數總覽-(2019-11-22)的X88和BV88儲存格(=45)
49_尾數排序-排數總覽-(2019-11-26)的F89和BF89儲存格(=45)

可否請您將其改成~
將在指定的搜尋範圍內,有顯示符合標示邏輯的數字之儲存格,都標示黃底色或淺藍底色?
謝謝您!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)