セルに文字を記入してみよういよいよここから本格的にマクロの勉強です。
■ この章で学ぶこと |
それでは、早速コードウインドウに以下のコードを記入して、実行してみてください。
Sub 最初のマクロ
Worksheets("sheet1").Range("A1") = "aaaa"
End Sub
|
Sub 最初のマクロ 〜 End Sub
Sub ○○で始まって、End Subで終わっています。これからコーディングしていく際にはこのルールを
守りましょう。ここで○○というのが、このプロシージャーの名前です。プロシージャーの名前には
ルールがありますので気をつけましょう。
Worksheets("sheet1").Range("A1") = "aaaa"
このコードを訳すと、「”sheet1”の”レンジA1”にaaaaを入力しなさい」となります。
これからWorksheetやRange等のオブジェクトを覚えていく必要があります。
ちなみに”.”は日本語の助詞”の”だと思ってもらって結構だと思います。
では、次にオブジェクトについて勉強しましょう。
オブジェクトとは英訳すると物です。よくオブジェクト指向ということを耳にしますが、かなり奥が深いものです。
例えば一台の車があるとします。その中にはエンジンもあれば、シャシー、ボディー等色々な”物”が
含まれています。これがオブジェクトと思っていいでしょう。
車の色を黒にしたいと思えば「”車”の”ボディー”の”色”を黒にする」という命令を言うと思います。
ここまでくればWorksheets("sheet1").Range("A1") = "aaaa"の意味も分かってくるのでは
ないでしょうか?
以下のコードを記入してください。
Sub セルの色変更等()
Worksheets("sheet1").Range("A1") = "aaaa"
Worksheets("sheet1").Range("A1").Interior.ColorIndex = 6
Worksheets("sheet1").Range("A1").Font.Bold = True
Worksheets("sheet1").Range("A1").Font.ColorIndex = 3
End Sub
|
Worksheets("sheet1").Range("A1").Interior.ColorIndex = 6
「セルA1の色を”6”にしなさい」という意味です。6というのは黄色を意味します。
Colorindexは1(黒)、2(白)、3(赤)・・となっており、一度試してみてください。
エクセルのヘルプでも参照できますので一度見てください。
Worksheets("sheet1").Range("A1").Font.Bold = True
「セルA1のフォントを”Bold(太字)”にしなさい」という意味です。ここで 〜.Range("A1").Font=Bold
となっていない理由は定かではありませんが、VBAの文法上こうなっています。
フォントを変更したい場合はこの文法を使いましょう。
ちなみに斜体にしたい場合はItalicを使用します。
Worksheets("sheet1").Range("A1").Font.ColorIndex = 3
「セルA1のフォントの色を”3(赤)”にしなさい」という意味です。上記の文と同様
Colorindexは1(黒)、2(白)、3(赤)・・となっていますので試してみてください。
でも「コードを複数回記述する必要があってうっとおしいなぁ」とおもったかたは、是非次のWith文を
覚えてください。
以下のコードを見てください。
Sub セルの色変更等2()
With Worksheets("sheet1")
.Range("A1") = "aaaa"
.Range("A1").Interior.ColorIndex = 6
.Range("A1").Font.Bold = True
.Range("A1").Font.ColorIndex = 3
End With
End Sub
|
今まではWorksheetの、Worksheetの、・・と同じことを4回繰り返していたと思います。
日本語も同様だと思いますが、同じことを何度も言うのは面倒ですよね。
そこで、このWith文です。
コードを見てもらえれば分かりますが、Withは改行した次の行に.(ピリオド)を記述すると
Withの後ろに記述したオブジェクトのオブジェクトを示すことになります。
以下のコードではさらにWorksheet.RangeまでをWith文でくくっています。
Sub セルの色変更等2()
With Worksheets("sheet1").Range("A1")
.Value = "aaaa"
.Interior.ColorIndex = 6
.Font.Bold = True
.Font.ColorIndex = 3
End With
End Sub
|