返回列表 上一主題 發帖

Excel VBA如何檢查_含有格式化條件儲存格數量

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
謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

這土方法在2013年版執行 有時候還會有NULL的錯誤值! 不了解其原因!敬請指教!
謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

TOP

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

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
謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

TOP

各位前輩好

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

20200813-1.rar (107.23 KB)

謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

TOP

各位前輩好
Andy常幫同事處理 開啟檔案就出現 “格式太多” 訊息的檔案
1.同事是用2003年版的Excel ,開啟檔案就全部格式刪除或亂碼
2.用2013年版Excel 可以開啟,幫忙處理刪掉一些沒用的垃圾資料或格式後,2003年版就可以用
3.各位前輩有什麼建議,檢查哪些方面問題?可以讓問題檔案瘦身、刪除垃圾資料,回歸正常檔案運作
4.有隱藏的垃圾嗎?
謝謝各位前輩指導
謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

TOP

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


格式化條件的數量可以直接使用 FormatConditions.Count 來確認

TOP

回復 6# cody


    謝謝前輩指導
再撥空測試 研習
目前忙於工作專案進行
謝謝前輩指導
您的指導若沒即時回應: 研習中或不方便回應(工作忙.沒有PC可測試..)

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題