同じことを何度も何度もする For~Next

2003版 繰り返し処理をするFor~Nextステートメント

毎回のように作成している記録のマクロですが、コードの意味が たとえよく分からなくても、便利だなあと思えば使っちゃえばいいのです。
関数だって、エクセルの内部でどのように計算しているかわからなくても、即座に正しい結果が出れば使っています。
でも、そこはマクロ講座ですから、多少なりとも理解を助ける説明を付け加えさせてもらいますが、面倒なら飛ばしてもいいんです。
今回は、繰り返し処理をするFor~Nextを頭に叩き込むことにしましょう。
(サンプルファイルは、こちらから マクロ講座23回サンプルデータ
このページの画像および解説はExcel2003用です。

記録のマクロでセルを赤く塗るマクロ

はじめにFor~Nextを使う準備として、セルを赤く塗るマクロの記録をしてみましょう。 さあ、今日もおきまりの実習ですよ。(「あ~、やだ」って言わないの!)

(1)マクロの記録を開始
(2)マクロの記録ダイアログボックスが表示されたら、名前をつけたほうが後でわかりやすです。 でも、そのままOKをクリックしてもかまいません。
(3)A1セルを選択し、ツールバーの色パレットボタンでセルを赤く塗ります。
  A2セルを選択し、セルを赤く塗ります。
  A3セルを選択し、セルを赤く塗ります。
  A4セルを選択し、セルを赤く塗ります。・・・A10セルまで繰り返します。
(4)A1:A10までのセルが赤く塗られました。
  マクロの記録を終了します。記録終了ボタンを押します。

自動記録で作成したマクロを見てみましょう。
セルの背景色は、InteriorオブジェクトのColorlndexプロパティまたはColorプロパティ を使います。 Colorlndexプロパティは、2003までおなじみでしたが、 2007以降は表示できる色が増えたので、Colorlndexで設定できない色は、Colorプロパティを使いRGB関数によって作成された値が入ります。
こちらは、Excel2003で記録した場合なので、ColorIndexプロパティが使われて、赤く塗るのは ColorIndex = 3
Sub Macro1()
    Range("A1").Select
    With Selection.Interior
        .ColorIndex = 3
        .Pattern = xlSolid
    End With
    '(同様のコードがA10まで繰り返されている)
End Sub
    
コードの解説です。
A1セルの範囲を選択して、
  その選択された部分の内側の色をカラーパレットの3番の色にする
  その選択された部分の内側の塗りつぶしパターンをSolidとする
  (同様の内容が、A10まで繰り返し)
という意味になります。

Selectionは選択されているもの
Interiorは、内部を意味し、
ColorIndexは、カラーパレットの色です。
Patternは、塗りつぶしのパターンです。


3番がなぜ赤になる?というと、
カラーパレットの色は、左上が1番で左から右、
上から下の順番に番号がふられています。だから3番は赤なんです。
コードをスリムにしますね。今回塗りつぶしPatternは、不要ですから
Sub Macro2()
        Range("A1").Interior.ColorIndex = 3
        Range("A2").Interior.ColorIndex = 3
        Range("A3").Interior.ColorIndex = 3
        Range("A4").Interior.ColorIndex = 3
        Range("A5").Interior.ColorIndex = 3
        Range("A6").Interior.ColorIndex = 3
        Range("A7").Interior.ColorIndex = 3
        Range("A8").Interior.ColorIndex = 3
        Range("A9").Interior.ColorIndex = 3
        Range("A10").Interior.ColorIndex = 3
End Sub
スポンサーリンク
スポンサーリンク