Visial Basic Application for Excel97

【自動記録を編集しよう】
1-2で自動記録したマクロを編集してみましょう。
もちろん自動記録したマクロをそのまま使うこともできますが、より使いやすくするためにマクロをつなぎ合わせたり値を変えるなど編集することで目的のマクロを完成させてみましょう。

以下が1-2で自動作成されたマクロです
Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 1999/7/1  ユーザー名 : ちゅん
'

'
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "あいうえお"
    Range("B2").Select
    Selection.Font.ColorIndex = 3
    With Selection.Font
        .Name = "MS Pゴシック"
        .FontStyle = "太字"
        .Size = 16
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
End Sub

◆◆◆◆◆

まずこのコードを使って若干の用語を説明していきます。

プロシージャ
Sub Macro1()
   コード
End Sub

プロシージャというのは「Sub Macro1」から始まって「End Sub」までで終わりとするコードの集合体を意味します。
マクロはプロシージャを一つのブロックとして実行されます。
「Sub Macro1」のMacro1の部分がマクロのタイトルになります。タイトルは自由に変えることができます。マクロ実行時にわかりやすいタイトルにしておきましょう。

ステートメント
    Range("B2").Select

ステートメントというのは操作を実行させるための個々の命令文です。一つのステートメントでExcelは一つの動作を実行します。
上記のRange("B2").SelectステートメントではB2のセルを選択するという動作をすることになります。
行の先頭から改行するまでの1行が1つのステートメントになります。
1つのステートメントを複数の行にわたって記述する場合には行の末尾に行継続文字「 _」(半角のスペースとアンダースコア)を使って改行します(↓例)
   Workbooks("Book1").Worksheets("Sheet2") _
   .Range("F2").FormulaR1C1 = "あいうえお"


コメント
' マクロ記録日 : 1999/7/1  ユーザー名 : ちゅん

「'」(シングルクォーテーション)で始まる行はコメント行になります。マクロ実行時にはこの文は無視されます。コメント文には好きなことを書き込むことができます。
コメントとなるのは「'」から改行されるまでがコメントとして扱われます。ですのでステートメントと同一の行にコメントをつけることもできます(↓例)
    ActiveCell.FormulaR1C1 = "あいうえお"  'アクティブセルに「あいうえお」と入力

◆◆◆◆◆

ではここで先ほどの1-2で自動記録したコードを解析していきましょう
Sub Macro1()   'タイトル行
'
' Macro1 Macro
' マクロ記録日 : 1999/7/1  ユーザー名 : ちゅん
'↑いつだれが自動記録したかのコメント行になります

'
    Range("B2").Select         'B2に移動

    ActiveCell.FormulaR1C1 = "あいうえお" 'アクティブセルに「あいうえお」と入力 

    Range("B2").Select         '再度B2に移動 

    Selection.Font.ColorIndex = 3    'フォントの色を赤に変更 

    With Selection.Font         'ここからセルの書式設定タブ 

        .Name = "MS Pゴシック"     'MS Pゴシックフォント 

        .FontStyle = "太字"        '太字に設定

        .Size = 16            'サイズを16に設定 

        .Strikethrough = False      '取消線をつけない

        .Superscript = False       '上付文字にしない

        .Subscript = False        '下付文字にしない

        .OutlineFont = False       'アウトラインフォントではない

        .Shadow = False          '影付きにしない 

        .Underline = xlUnderlineStyleNone 'アンダーラインなし

        .ColorIndex = xlAutomatic     '色を自動設定 

    End With               'ここまで書式設定タブ

End Sub   'ここまででマクロ終了


上記のマクロから1-2の自動記録で行った作業だけをピックアップしてみると・・
Sub Macro1()

    Range("B2").Select
    ActiveCell.FormulaR1C1 = "あいうえお"
    Range("B2").Select
    Selection.Font.ColorIndex = 3
    With Selection.Font
        .FontStyle = "太字"
        .Size = 16
    End With
End Sub

これだけでもかなりすっきりとしたコードになったと思います。
◆◆◆◆◆
では、これを元に改造してみましょう。いよいよここからが本番です。
■■操作手順■■
   1.Macro1をTestMacroに変更
   2."B2"を"B3"に変更
   3."あいうえお"を"かきくけこ"に変更
   4. .Sizeを16から14に変更

変更後のコードはこんな風になります。
Sub TestMacro()

    Range("B3").Select
    ActiveCell.FormulaR1C1 = "かきくけこ"
    Range("B3").Select
    Selection.Font.ColorIndex = 3
    With Selection.Font
        .FontStyle = "太字"
        .Size = 14
    End With
End Sub

マクロを編集し終わったら動作確認をしてみましょう。ツールバーの一番左端にある[表示 MicrosoftExcel]ボタンをクリックするかXボタンをクリックしてExcelのシートを表示させ、「TestMacro」を実行して下さい。編集に誤りがなければB3のセルに「かきくけこ」と表示されます。
◆◆◆◆◆
では編集後実行したらエラーがでたらどうなるでしょうか。実際にやってみましょう。
■■操作手順■■
   1.Selection.Font.ColorIndexを3から85に変更

実行してみると
実行時エラー '1004':

FontクラスのColorIndexプロパティが設定できません

というエラーが表示されます。まず、その時と対処としてどのステートメントでエラーになっているのかを調べてみましょう。
やり方はエラーダイアログボックスにある[デバック(D)]ボタンをクリックします。するとエラーとなっているSelection.Font.ColorIndex = 85の行が黄色く塗られるのでそのステートメントがエラーになっていることがわかります。
ではなぜエラーになったのでしょうか?
ヘルプからColorIndexプロパティをみてみましょう。その解説の所にインデックス番号が割り当てられているのが1〜56までとなっています。
56までしかないのに85の色を参照しようとしたためのエラーだったということがわかります。
ColorIndexの値を56より小さい数に変更しておきましょう。

ただし、[デバック]ボタンを使ってもエラーの場所がわからない場合もあります。
■■操作手順■■
   1.End Withの行を削除

実行してみると
コンパイルエラー:

End Withが必要です

というエラーが表示され、この場合は先ほど削除したEnd Withの部分でエラーがおきていますがOKボタンを押すとSub TestMacro()の部分が黄色く塗られます。この場合はどこでエラーが起きているかは自分の手で探さなければなりません。
◆◆◆◆◆
もうちょっと汎用性のあるマクロを作ってみましょう。
まずアクティブセルにさっき作った「かきこけこ」を表示するマクロです。
Sub TestMacro2()

    ActiveCell.FormulaR1C1 = "かきくけこ"
    Selection.Font.ColorIndex = 3
    With Selection.Font
        .FontStyle = "太字"
        .Size = 14
    End With
End Sub

変わったところはRange("B3").Selectの行が削除されているだけですね。
どこか適当なセルに移動してTestMacro2を実行させて下さい。アクティブセルに先ほどと同じセルが作成できたと思います。


次は最初から入力されている文字にさっきのセルと同じ書体にしてみましょう。
もうどこを編集すればよいかおわかりですね?
Sub TestMacro3()

    Selection.Font.ColorIndex = 3
    With Selection.Font
        .FontStyle = "太字"
        .Size = 16
    End With
End Sub

Activecell.FormulaR1C1 = "かきくけこ"の部分が削除されています。
どこか適当なセルに移動して何か文字を入力して下さい(マクロテストとか)。入力したセルをアクティブにしてTestMacro3を実行するとMacroTest2と同じ書体に変更されます。


次は作成したマクロを簡単に使えるようにする方法です



Back  Top 

home


yVoC[UNLIMIT1~] ECir|C Yahoo yV LINEf[^[z500~`I


z[y[W NWbgJ[h COiq O~yz COsI COze