Board logo

標題: [發問] 尋解答 [打印本頁]

作者: wwh126    時間: 2013-8-22 06:03     標題: 尋解答

如A1數(A2-A50)內有那些儲存格是藍色(因某些儲存格做了一些conditional formatting )!
要在A1 格內顯示有多少格!
VBA 如何編寫!
作者: dechiuan999    時間: 2013-8-22 06:48

回復 1# wwh126


    您好:

請試試如下
Sub aa()
   
    Dim mSht As Worksheet
    Dim mRng As Range, mRng1 As Range
    Dim s%
   
    Set mSht = ActiveSheet
    With mSht
        Set mRng1 = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
        For Each mRng In mRng1
       If mRng.Interior.ColorIndex = 5 Then '儲存格顏色
            'If mRng.Font.ColorIndex = 5 Then '儲存格字型顏色            
                s = s + 1
            End If
        Next
        If s > 0 Then
            .Range("a1") = "藍色儲存格合計 :" & s
        End If
    End With
End Sub
作者: Hsieh    時間: 2013-8-22 08:40

回復 1# wwh126

是要計算符合條件格式為藍色的儲存格數量嗎?
那要針對格式條件做計算
作者: handsometrowa    時間: 2013-8-22 09:14

本帖最後由 handsometrowa 於 2013-8-22 09:28 編輯

回復 2# dechiuan999


    版大
   Set mRng1 = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))

這行陳述式,要抓A2:A50 最後使用的  .End(xlUp)  這樣子可以嗎@@?

先看到先回我還沒試驗,拍謝

使用End(xlDown) 這樣子 會不會比較好@@?

還是我搞混了?
作者: Hsieh    時間: 2013-8-22 13:33

回復 4# handsometrowa
如果資料範圍內不包含空格
那麼End(Xlup)與End(Xldown)會得到相同結果
但若中間包含空格
End(Xldown)則會只取到空格處
作者: wwh126    時間: 2013-8-22 22:19

但如果藍色儲存格是由conditional formatting 轉成的則顯示不了!
作者: wwh126    時間: 2013-8-24 02:12

回復 2# dechiuan999

但藍色儲存格是由設定格式化條件中....儲存格的值是大於零時該儲存格會變成藍色,則COUNT 不出來。

求解決.....
作者: dechiuan999    時間: 2013-8-24 08:11

回復 7# wwh126


    大大你好:

   Hsieh版主大大有說明如果是要
計算符合條件格式為藍色的儲存格數量,
那要針對格式條件做計算。

  所以,應該無法直接依已格式化的
儲存格顏色做計算。

是否可改成針對格式條件來做計算呢?

例如:
a2:a20儲存格設定大於100時,
顏色顯示為藍色。

Sub aa()
   
    Dim mSht As Worksheet
    Dim mRng As Range, mRng1 As Range
    Dim s%
   
    Set mSht = acitvesheet
    With mSht
        Set mRng1 = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
        For Each mRng In mRng1
            If mRng.Value > 100 Then
                s = s + 1
            End If
        Next
        
        .Range("c1") = "符合格式條件合計 :" & s
    End With
End Sub
作者: wwh126    時間: 2013-8-24 13:21

回復 8# dechiuan999


    Sub aa()
   
    Dim mSht As Worksheet
    Dim mRng As Range, mRng1 As Range
    Dim s%
   
    Set mSht = ActiveSheet
    With mSht
        Set mRng1 = .Range("a2:A1000", .Range("a" & .Rows.Count).End(xlUp))
        For Each mRng In mRng1

      If mRng.FormatConditions(1).Interior.ColorIndex = 5 Then  

                s = s + 1
            End If
        Next
        If s > 0 Then
            .Range("a1") = "" & s
        End If
    End With
End Sub



紅色個句有錯誤, 請問點解決!!
作者: dechiuan999    時間: 2013-8-24 14:58

回復 9# wwh126


    大大您好:

小弟對excel vba的理解實在有限。
目前也是邊學邊實習階段。
我想還是由版主及各位大大幫您
會比較好。
另外,是否可提供範例讓小弟
也有學習的機會呢?
作者: oobird    時間: 2013-8-24 23:33

此例可依格式化的條件做計算
[a1] = Application.CountIf(Range("a2", [a65536].End(3)), ">0")




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