マクロの記録

わずかな知識で VBA!

マクロの記録


マクロの記録



  Excelに操作をおぼえさせる  =  マクロの記録

   簡単にExcelを自動化する方法から始めましょう!

   エクセルには「マクロの記録」という、あなたが行った操作を、
   マクロに自動変換してくれる機能があります。

   何も知らなくても、簡単にマクロが作れます。
   そんな、エクセルの「マクロの記録」にチャレンジしましょう!

わずかな知識で
VBA!





 
   実際にExcelを開いて、操作をしながら覚えれば意外と簡単なことがわかると思います。

   注 意

        Excel2007が発売されましたが、
        ほとんどのかたは、Excel2003以前のバージョンだと思います。

        Excel2007では、ツールバーの配置がそれ以前の物とガラっと変わり、
        また、「マクロの記録」も機能アップして、
        以前のバージョンほど余分な物を記録しなくなっております。

        しかし、Excel2003から削られた機能もあるようで、
        Excel2007では、グラフ操作等が記録されないようです。
 

        ここでは、念のために両方のバージョンで説明しますが、
        貼り付けた画像は、Excel2007のものやExcel2003のものなので、
        それ以前のバージョンの物とは多少違っております。

        それぞれの説明は、重複部分は省いていますので、
        どちらのバージョンの方も、あきらめて、順に読んでいってください。

 
マクロの記録

  下準備として、Excelの新しいシートを開いて、セルC6に「2.5」、D6に「3」と記入しておいてください。

  では、いよいよ記録します。

  Excel2007

   「ツールバー」 ⇒ 「表示」タグ ⇒ マクロボタン ⇒ マクロの記録(R)
 
     

  「開発」タグを表示した場合はそちらから

  

  Excel2003以前

  メニュー ⇒ ツール(T) ⇒ マクロ(M) ⇒ 新しいマクロの記録(R)

  

  
下のようなフォームが表示されるので、ここでは、そのまま「OK」ボタンをクリック
  

           

  
  ここから、先のあなたの操作はマクロとして記録されます。

  Excel2003以前のバージョンでは、記録中は、「記録終了」という小さなフォームが表示されますが、

  Excel2007では表示されません。

           


  1.セルE7を選択して、「=ROUND(C6*D6,2)」と入力してください。

  2.表示を、少数点以下第2位までに変更して、ついでに太字に変更してください。

  Excel2007

  ツールバーのマクロボタンをクリックして、「記録終了(R)」をクリックします。

  Excel2003以前

  表示されている小さなフォームの「■」ボタンをクリックします。

  これでマクロの記録は終了です。


  Excel2003までは、間違えてやり直した操作も記録されましたが、
  Excel2007では、やり直した操作は記録されなくなりました。

  進歩していないのは、私だけみたいです(泣)

 
  「マクロの記録」では記録されない操作

    Excel以外の操作

    あくまでもExcel上の操作しか記録しません。

    ダイアログボックスを開く操作 (VBAにもこの命令は用意されています。)
    マクロの記録は結果だけを記録するようで、「ファイルを開く」などのダイアログボックスを開いても、
    「ファイルを開いた」という記録はされますが、ダイアログボックスを開いたという記録はされません。

    マクロの記録だけでは、習得できない知識です。

    日本語に変換する操作
        文字が確定してセルに入力された時点で記録されます。変換動作は記録されません。
   

    また、マクロの記録は、操作の記録に留まるため、操作できるものは、記録できますが、
    そうでないものは記録できません。

       プログラミングしていく上で、ユーザーが現在操作しているシートの名前を知りたい時が
       あります。

       シートの名前は、「Name」プロパティで取得します。
       Dim namae As String

       namae = ActiveSheet.Name      

       これで、変数namaeに、アクティブシートの名前が代入されます。
             
       このような場合は、必要なプロパティ(ここでは、シートの名前)は何か?

       を探して、

       そのプロパティの値(ここでは、「計算書1」など)を取得すればいいのです。

       オブジェクトとプロパティの説明は、「マクロの編集とデバッグ」の章で、詳しく説明します。


  マクロの編集

  マクロを記録したら、次は記録したマクロを編集します。

  Excel2007

     「ツールバー」 ⇒ 「表示」タグ ⇒ マクロの表示ボタン

  Excel2003以前

     メニュー ⇒ ツール(T) ⇒ マクロ(M) ⇒ マクロ(M)

  
  下のようなダイアログボックスがオープンします。


           




  Macro1を選択して「編集(E)」ボタンをクリックしてみましょう。

  すると、画面が切り替わって記録されたマクロが表示されます。


  



  ツールバーのボタンで操作した場合

     Sub Macro1()
'
       'Macro1 Macro
       '
       Range("E6").Select
       ActiveCell.FormulaR1C1 = "=ROUND(RC[-2]*RC[-1],2)"
        Range("E7").Select
       Range("E6").Select
       Selection.NumberFormatLocal = "0.00_ "
       Selection.Font.Bold = True
     End Sub


  または、「セルの書式設定」で操作した場合


     Sub Macro1()
'
       ' Macro1 Macro
       ‘マクロ記録 :2007/*/* ユーザー名:** **
       '
       Range("E6").Select
       ActiveCell.FormulaR1C1 = "=ROUND(RC[-2]*RC[-1],2)"
       Range("E7").Select
       Range("E6").Select
       Selection.NumberFormatLocal = "0.00_ "
       With Selection.Font
          .Name = “MS Pゴシック
           .FontStyle = “太字”
          .Size = 11
          .Strikethrough = False
          .Superscript = False
          .OutlineFont = False
          .Shadow = False
          .Underline = xlUnderlineStyleNone
          .ColorIndex = xlAutomatic
       End With
     End Sub




  ちなみに、Excel2007では、「‘マクロ記録 :200*/*/* ユーザー名:** **」は記述されません。

  どちらも、このままで十分使用できますが、余分なものまで記録されていますので、
  ちょっと手を加えて、すっきりとしたものに変えてみます。

   まず、マクロの名前を「Macro1」から、「式の入力」に変えてみます。

  マウスで「Macro1」を選択しワープロと同じ要領で書き換えるだけです。

     Sub Mcro1() 下線部分が名前です。
         ↓
     Sub 式の入力()

  Macroの記述内容を簡単に説明します。

   Range("E6").Select   セル(”E6”)を選ぶ

   ActiveCell.FormulaR1C1 = "=ROUND(RC[-2]*RC[-1],2)"

    選ばれたセルに式を入力します。
   計算式の中の「RC[-2]とは、Rが行でCが列を表します。
   つまり、「RC[-2]」とは、同じ行の2列前のセル(C6)ということです。

   Range("E6").Select   セル(”E6”)を選ぶ

   Selection.NumberFormatLocal = "0.00_ "
  
    選ばれたセルの表示桁数を「小数点以下第2位」にします。

   With Selection.Font
      .Name = “MS Pゴシック
      .FontStyle = “太字”
      .Size = 11
      .Strikethrough = False
      .Superscript = False
      .OutlineFont = False
      .Shadow = False
      .Underline = xlUnderlineStyleNone
      .ColorIndex = xlAutomatic
   End With


    選ばれたセルのフォントを「Withステートメント」を使用しての設定をしています。



   編集作業

    手作業では選択したセルにしか入力できませんが、マクロの場合は選択する必要が無く
   アクティブになっていないシートや、他のブックのシートにも入力できるので、

   「Select」は不要です。

    また、With以降の操作で今回変更したのは、「太字」だけなので他の部分も必要ありません。

   編集後は

     Sub式の入力()
'
       ' Macro1 Macro
       ‘マクロ記録 :2007/*/* ユーザー名:** **
       '
       Range("E6").FormulaR1C1 = "=ROUND(RC[-2]*RC[-1],2)"
       Range("E6").NumberFormatLocal = "0.00_ "
       Range("E6").Font.FontStyle = “太字”
       
     End Sub



   これを「Withステートメント」というもので整理簡略化すると

     Sub式の入力()

        With Range("E6")
           .FormulaR1C1 = "=ROUND(RC[-2]*RC[-1],2)"
           .NumberFormatLocal = "0.000_ "
           .Font.FontStyle = "太字"
        End With

     End Sub



    と、なります。

   「Withステートメント」は、他の章でくわしく説明します。

    また、

   Selection.NumberFormatLocal = "0.00_ "

    を

   Range("E6").NumberFormatLocal = "0.00_ "

   に修正しないとエラーにはなりませんが、セルを選択していないので、
   現在選択されているほかのセルの表示桁数を、変更してしまうことになります。

   編集は簡単ですが、落とし穴はそこら中にあると思っていてください。

   このマクロの(“E6”)部分を、他のセルに修正すれば、
   そのセルに同じ計算式を入力することができます。


   これで、このマクロの編集は終わりました。

  

  ここで「構文エラーのチェック」を行います。

  画面上にあるツールバーの「デバッグ(D)」をクリックして
  「VBAProjectのコンパイル(L)」をクリックします。


   
  

  今編集したマクロに文法的なエラーがあるかどうかが分かります。

  ただし、このチェックは、最初のエラーで止まるので、修正したあとに再び実行し、
  正常に終了するまで、繰り返します。

  このチェックでわかるのは、あくまでもVBAの文法的なエラーのチェックだけです。

  作成したマクロが、正常に動作するかどうかは別問題です。



  マクロの実行

  マクロを編集したら、次は、マクロの動作確認を行います。

  


  動作確認の前に、先ほど入力したセル(“F6”)の式を消去しておきます。書式も変更しておいてください。

  ここからは、さきほどの「編集」と同じ手順です!

  Excel2007

       「ツールバー」 ⇒ 「表示」タグ ⇒ マクロの表示ボタン

  Excel2003以前

       メニュー ⇒ ツール(T) ⇒ マクロ(M) ⇒ マクロ(M)


   

   セル(“F6”)に先ほどの計算式が入力され、書式が指定どおりに変更されれば、動作確認の終了です。

   <マクロを登録して実行する方法については、次章にゆずります。>


  マクロ記録の限界

  「マクロの記録」は、とても素晴らしい機能ですが、まだまだ万能なものになっていません。

  ここでは、「マクロの記録」の大きな欠点をあげておきます。VBAを学習する必要があるのもそのためで、
  「マクロの記録」が万能なものになっていれば、VBAを学習する必要がなかったハズです(泣)


    1. 無駄な操作が記録される!

    

       
    2. デフォルト値が記録されてしまう!

    

               デフォルト値は省略できるので、さっさと削除しましょう!


   3. 条件判断や繰り返しを行うマクロが作成できない!

    「これがこうなら、あれをこうして、これもこうして」というような、セルの内容に応じた処理や、
    同じ条件なら同じ処理を繰り返し行うマクロが作成できません。


   4. 対話型の汎用性のあるマクロが作成できない!

    ユーザーインターフェースを使用した対話型のマクロも、「マクロの記録」では作成できません。

    VBAの知識が必要とされる由縁です。

        


  わずかな知識でVBA!       TOP

  マクロで何ができる?   ユーザーインターフェース    マクロの記録   マクロの登録
 
  イベントについて      マクロの編集とデバッグ    ゲームで覚えるVBAプログラミング
 
  オブジェクトの操作     セルの操作            MsgBox関数・InputBox関数
 
  変数の型           ヘルプの活用          イミディエイトウィンドウ  
 
  Withステートメント      Setステートメント
 
  条件分岐のステートメント   If Then Else,Select Case
 
  繰り返しのステートメント   Do Loop
 
  繰り返しのステートメント   For Next
  
  ダイアログボックスを作ってみよう1               ダイアログボックスを作ってみよう2 【実践編】
  
  ActiveXコントロール    各コントロールのプロパティ       文字列の操作        Endプロパティ

  リンク・検索   マイプロフィール       YouTubeの部屋 

Copyright (C) わずかな知識でVBA! All Rights Reserved