太字または赤色文字のセルの数を求めるには?

Question 48.6 Excel VBA Borad (掲示板)より Previous Next
1~30,000(20列150行)まで数字を入力したRange("番号")の範囲から、太字(又は文字色=赤)になっている数字のセルの個数を求めたいのですが・・・?
範囲「番号」のイメージ いろいろやってみましたが・・・ヒントをお願いします。

空白を検索するのであれば次のように考えました。
Sub 空白検索()
    x = Range("番号").SpecialCells(xlCellTypeBlanks) _
        .Cells.Count
    MsgBox x & "個の空白があります"
End Sub
これが、文字が太字や文字の色でセルの個数を数える場合を、教えていただきたいと思います。 表示形式なので xlCellTypeAllFormatConditions などを使うのかなと思いましたが、うまくいきません。 よろしく・・・。
Answer   2001.8.26 ムラジロ~
1つ1つチェックするしかしょうがないでしょう。
はずしてたらすみません。
Dim myRng As Range
Dim myFlag As Byte                          '※1
Dim myBoldCnt As Long, myRedCnt As Long
Dim myBoldOrRedCnt As Long, myBoldAndRedCnt As Long

    For Each myRng In Range("番号")
        myFlag = 0
        With myRng
            If .Font.Color = RGB(255, 0, 0) Then myFlag = myFlag + 1
            If .Font.Bold Then myFlag = myFlag + 2
        End With
        If myFlag And 1 Then myRedCnt = myRedCnt + 1
        If myFlag And 2 Then myBoldCnt = myBoldCnt + 1
        If myFlag And 3 Then myBoldOrRedCnt = myBoldOrRedCnt + 1
        If myFlag = 3 Then myBoldAndRedCnt = myBoldAndRedCnt + 1
    Next
    MsgBox "太字" & vbtab & vbtab & myBoldCnt & vbcrlf _
        & "赤" & vbtab & vbtab & myRedCnt & vbcrlf _
        & "太字または赤" & vbtab & myBoldOrRedCnt & vbcrlf _
        & "太字かつ赤" & vbtab & myBoldAndRedCnt
※1 Excel 95では、As Byteを As Integerに変えればエラーにはならない (WebMaster注)
解説のお願い
まだ初心者なので・・・簡単にはいかないと思ってました。ムラジロ~さんありがとうございました。
ひとつ解説をお願いしたいのですが・・・。
if...thenステートメントの

if myflag and 1 then ...
myflag and 1...
myflag and 2...
myflag and 3...
の解説をお願いします。すみません。
Answer   2001.8.28 ムラジロ~
And演算子は論理積を返します。俗に言う「かつ」ですが、数値について考える場合2進数が基本となります。

school このときmyFlagは0~3ですので、00、01、10、11となります。
 00 何もない
 01 赤
 10 太
 11 赤太
つまり、1桁目の1は赤であることを表し、2桁目の1は太字であることを表しています。
これと 1(01)をAnd演算子でつなぐと各桁に
ついて積を返しますので
00→00、01→01、10→00、11→01となります。
同様に 2(10)だと 00→00、01→00、10→10、11→10。
3(11)だと 00→00、01→01、10→10、11→11となります。
If ~ Then ステートメントは条件が真であるときに実行されると、よく物の本には書いてありますが、実際には偽でないときに実行されます。 数値で考えたらわかりやすいのですが、非ゼロの時に実行されます。
そのため
If myFlag And 1 Then とすれば、myFlagが1または3であるときにコードが実行され
If myFlag And 2 Then とすれば、myFlagが2または3   〃      〃
If myFlag And 3 Then とすれば、myFlagが0でないときにコードが実行されます。
こんな説明でよろしいでしょうか?
ありがとうございました
ムラジロ~さんありがとうございます。myFlag And 1 の意味がよくわからなかったので・・・。勉強になります。よくわかりました。
またよろしくお願いします。

Excel VBA Macro