Board logo

標題: Excel VBA如何檢查_含有格式化條件儲存格數量 [打印本頁]

作者: Andy2483    時間: 2020-8-6 13:46     標題: Excel VBA如何檢查_含有格式化條件儲存格數量

各位前輩好
1.請教 檢查_含有格式化條件儲存格數量 的程式碼
2.以下是用Interior.ColorIndex 與DisplayFormat.Interior.ColorIndex變換作驗證是否有 格式化條件
2.1.可是這個自己想的土方法在2003年版 不支援
2.2.可以設定的格式有很多種(底色.字色.粗體.斜體.格線....等),有什麼方法可一次解決嗎?
2.3.如果格式化條件是設在4合併儲存格裡!怎麼判定只有1格?
2.3.1.取消合併儲存格後 有格式化條件格位址怎麼取得?
2.4.Andy想進步!程式碼也請指教

請各位前輩指教 謝謝

Sub 檢查_含有格式化條件數量()
Dim uR As Range, formatcoN&, formatcoAD$, msg$, formatcoRng As Range
Dim orinColor&, disinColor&, orfoColor&, disfoColor&
Dim newinColor&, newdisinColor&, newfoColor&, newdisfoColor&, diF&
For Each uR In check_Area.SpecialCells(2)
   diF = 0
   orinColor = uR.Interior.ColorIndex
   disinColor = uR.DisplayFormat.Interior.ColorIndex
   If orinColor <> disinColor Then
      diF = 1
      GoTo 9
      Else
         If disinColor = -4142 Then
            disinColor = 1
         End If
         uR.Interior.ColorIndex = disinColor + 1
         newinColor = uR.Interior.ColorIndex
         newdisinColor = uR.DisplayFormat.Interior.ColorIndex
         uR.Interior.ColorIndex = orinColor
         If newinColor <> newdisinColor Then
            diF = 1
            GoTo 9
         End If
   End If
   orfoColor = uR.Font.ColorIndex
   disfoColor = uR.DisplayFormat.Font.ColorIndex
   If orfoColor <> disfoColor Then
      diF = 1
      GoTo 9
      Else
         If disfoColor = -4105 Then
            disfoColor = 1
         End If
         uR.Font.ColorIndex = disfoColor + 1
         newfoColor = uR.Font.ColorIndex
         newdisfoColor = uR.DisplayFormat.Font.ColorIndex
         uR.Font.ColorIndex = orfoColor
         If newfoColor <> newdisfoColor Then
            diF = 1
            GoTo 9
         End If
   End If
   
9: If diF = 1 Then
      formatcoN = formatcoN + 1
      If formatcoAD = "" Then
         formatcoAD = uR.Address
         Else
            formatcoAD = formatcoAD & "," & uR.Address
      End If
   End If
Next
If formatcoN > 20 Then
   msg = "格式化條件太多!不顯示格位"
   ElseIf formatcoN <> 0 Then
      msg = "有格式化條件儲存格格位: " & formatcoAD
   Else
      msg = "沒有 格式化條件"
End If

101
ck_K = "檢查_格式化條件格數量(參考)"
ck_Q = formatcoN
ck_W = msg
ck_AC = "NA"

End If
End Sub
作者: Andy2483    時間: 2020-8-6 20:31

這土方法在2013年版執行 有時候還會有NULL的錯誤值! 不了解其原因!敬請指教!
作者: Andy2483    時間: 2020-8-12 16:45

謝謝各位前輩指導
以下這個辦法對嗎?

Option Explicit
Sub 檢查_格式化條件數量_1() 'FormatConditions.Count
Dim msg As String, foco As Range
On Error Resume Next
For Each foco In Cells.SpecialCells(2)
   With foco.FormatConditions.Add(xlCellValue, xlGreater, "")
      msg = msg & foco.Address
   End With
Next
If msg = "" Then msg = ActiveSheet.Name & " 沒有任何 格式化條件...."
MsgBox msg
End Sub
作者: Andy2483    時間: 2020-8-13 19:52

各位前輩好

上傳範例檔作說明
縮短執行時間.程式結構....等值得前輩們建議或指導的請不吝指導
謝謝各位指導
作者: Andy2483    時間: 2020-8-13 22:11

各位前輩好
Andy常幫同事處理 開啟檔案就出現 “格式太多” 訊息的檔案
1.同事是用2003年版的Excel ,開啟檔案就全部格式刪除或亂碼
2.用2013年版Excel 可以開啟,幫忙處理刪掉一些沒用的垃圾資料或格式後,2003年版就可以用
3.各位前輩有什麼建議,檢查哪些方面問題?可以讓問題檔案瘦身、刪除垃圾資料,回歸正常檔案運作
4.有隱藏的垃圾嗎?
謝謝各位前輩指導
作者: cody    時間: 2020-9-16 13:01

2.以下是用Interior.ColorIndex 與DisplayFormat.Interior.ColorIndex變換作驗證是否有 格式化條件
Andy2483 發表於 2020-8-6 20:31


格式化條件的數量可以直接使用 FormatConditions.Count 來確認
作者: Andy2483    時間: 2020-9-17 05:27

回復 6# cody


    謝謝前輩指導
再撥空測試 研習
目前忙於工作專案進行




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