dポイントプレゼントキャンペーン実施中!

Excel2007のVBAの初心者です。

列のなかにある黄色のセルの個数をカウントしたいと思い、いろいろ探しているとVBAにおいて以下のようなコードを発見しました。

 Dim c As Range,cu As Long
 Application.Volatile
 For Each c In a
 If c.Interior.ColorIndex = 6 Then cu = cu +1
 Next
 color6 = cu
 End Function

しかし、いざやってみると
「コンパイルエラー プロシージャの外では無効です」
と表示され、うまくいきません。コードが違うのかどうかも分からないし、この警告文の意味もわかりません。

どなたか詳しい方。よろしくお願いします。

A 回答 (1件)

Public Function Macro1()


    Dim c As Range,cu As Long
    Application.Volatile
    For Each c In a
      If c.Interior.ColorIndex = 6 Then cu = cu +1
    Next
    color6 = cu
End Function

ってなってます?
一番上の文がないところで書いてもダメですよ。
あとExcelから呼び出せるマクロは、
Public Sub Macro1()

End Sub
と『Function』ではなく『Sub』のものだけのはずです。

あともしソース上の一番上に
Option Explicit
っていう文があったら
aという変数の宣言が行われていないので
変数宣言をちゃんとしてあげましょう。
(Option Explicitを消してもいいですが、バグの温床に
なりやすいです)

あとふと思ったことですが、『列のなかにある黄色のセル』
というのがある規則に則って色が設定されていたり、
条件付き書式で設定されていたりするならば数式だけでも
解決出来るのでは。
    • good
    • 0
この回答へのお礼

できました!ありがとうございました。

黄色いセルは各列ごとにランダムに配置されています。
もしもっと簡単な方法があれば教えてください!

お礼日時:2009/11/08 01:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!