Board logo

標題: [發問] 錄製的程式碼,執行產生BUG [打印本頁]

作者: ziv976688    時間: 2019-12-6 04:07     標題: 錄製的程式碼,執行產生BUG

測試檔 : [attach]31511[/attach]
Sheet1的程式碼是依據Sheet2格式化的3個條件公式所錄製的,
不知為什麼Sheet1的程式碼執行後會產生BUG?
BB:BE欄的標示不正確(請詳見Sheet2! BB:BE的正確標示)。

請問︰Sheet1錄製的程式碼,有哪裡錯誤了?
請各位大大指正!謝謝!
作者: ziv976688    時間: 2019-12-6 08:31

本帖最後由 ziv976688 於 2019-12-6 08:46 編輯

補充3個條件公式的邏輯 :
選取BB17:BX80
條件1 :
當BB欄的(ROW(16:79)/7)餘數=2的各列之最小值且<5時,則將其同欄的下一個儲存格標示40號底色+紅色字體。
條件2 :
當BB欄的(ROW(16:79)/7)餘數=2的各列之最小值時,則將其同欄的下一個儲存格標示40號底色+綠色字體。
條件3 :
當BB欄的(ROW(16:79)/7)餘數=2的各列之值<10時,則將其同欄的下一個儲存格標示綠色字體。

格式往右複製到BX欄。
謝謝 !
作者: ziv976688    時間: 2019-12-6 14:02

本帖最後由 ziv976688 於 2019-12-6 14:10 編輯

說明的筆誤修正 :
選取BB17:BX80修正為選取BB17:BK80
格式往右複製到BX修正為格式往右複製到BK
謝謝 !
===========================================
Sheet1錄製的程式碼如下 :

Sub Macro1()
'
' Macro1 Macro
' MC SYSTEM 在 2019/12/6 錄製的巨集
'

'

    Range("BB17:BK80").Select
    Selection.FormatConditions.Delete
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=(MIN(IF((MOD(ROW($16:$79),7)=2),BB$16:BB$79))=BB16)*(MOD(ROW(BB16),7)=2)*(BB16<5)"
    Selection.FormatConditions(1).Font.ColorIndex = 3
    Selection.FormatConditions(1).Interior.ColorIndex = 40
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=(MIN(IF((MOD(ROW($16:$79),7)=2),BB$16:BB$79))=BB16)*(MOD(ROW(BB16),7)=2)"
    Selection.FormatConditions(2).Font.ColorIndex = 10
    Selection.FormatConditions(2).Interior.ColorIndex = 40
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=(MOD(ROW(BB16),7)=2)*(BB16<10)"
    Selection.FormatConditions(3).Font.ColorIndex = 10
   
End Sub
作者: ziv976688    時間: 2019-12-7 05:49

本帖最後由 ziv976688 於 2019-12-7 06:02 編輯

測試檔的內容和操作說明 :
1_Sheet1&Sheet2的BB17:BK80之3個格式化條件公式都相同。
2_在Sheet1設立1個執行按鈕鍵。
3_將Sheet1的3個格式化條件公式錄製巨集。
4_Sheet2格式化條件公式的顏色標示,留作比對用。

問題 :
按Sheet1的執行按鈕鍵後,其BB :BE欄的標示不正確(即與Sheet2的留底顏色標示不同)。

請問 :
Sheet1錄製的巨集程式碼,哪裡有錯誤 ? 要如何修正 ?
謝謝 !

PS :
因為Sheet1如果是選取BB17:BK80後,點上方工具列的"格式",再點"設定格式化的條件",再點確定後,則Sheet1的顏色標示就完全正確(即與Sheet2的留底顏色標示完全相同),
所以認為3個格式化的條件公式,應該是沒有問題。
作者: 准提部林    時間: 2019-12-8 10:26

With Range("BB17:BK80")
    .Select
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=MMULT(1,MIN(OFFSET(BB$16,ROW($1:$10)*7-7,))/($BA17=""最小"")/(BB16<5))=BB16"
    .FormatConditions(1).Font.ColorIndex = 3
    .FormatConditions(1).Interior.ColorIndex = 40
    .FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=MMULT(1,MIN(OFFSET(BB$16,ROW($1:$10)*7-7,))/($BA17=""最小""))=BB16"
    .FormatConditions(2).Font.ColorIndex = 10
    .FormatConditions(2).Interior.ColorIndex = 40
    .FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=($BA17=""最小"")*(BB16<10)"
    .FormatConditions(3).Font.ColorIndex = 10
End With

應該是陣列公式的問題, 必須手動再確定,
改成一般公式~~

========================
作者: ziv976688    時間: 2019-12-8 16:52

本帖最後由 ziv976688 於 2019-12-8 16:53 編輯

回復 5# 准提部林
准提版主 : 您好!
因為原格式化的條件公式以"手動"操作時,顏色標示都沒有問題,只是以"按鈕"執行錄製的程式碼時,顏色標示才會有BUG,所以我沒有考慮到公式會是陣列

貴解題公式經"手動"和"按鈕"操作測試後,顏色標示完全正確。
謝謝您!感恩




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