マクロで省力化?

【業務への活用】

Windows95の時代に、EXCEL97上で動くマクロの存在を知りました。しかも、Basic言語。期待して見てみると、コレクション、メソッド、イベント・・・。いきなり異次元の世界。新しいwindows時代のBasicはあまりに敷居が高く、強烈なインパクトを残し、私から立ち去ろうとした事を覚えています。が、それも『慣れ』なのかもしれません。当時はゴールの見えない『もの凄く高い山』をイメージしていましたが、登ってみると案外低いものです。しかも快適。メインが1で出力に9の時間をかけてプログラミングしていたMS-DOSの時代が嘘のようです。VBA (Visual Basic for Applications)の登場で自分のイメージどおりに簡単にソフトを作れる時代になりました。本サイトは、EXCELのVBAを少しでも多くの方が業務に活用し省力化のお役に立てるよう、その第一歩になれればと考えています。

マクロの作り方

ワークシートをコピーする操作の自動化マクロを作成します。

  • メニューバーから[表示]⇒[ツールバー]⇒[Visual Basic]を選択します。[Visual Basic]を選択します
  • [Visual Basic]ツールバーが表示されたらマクロの記録ボタンをクリックします。[マクロの記録]ダイアログボックスが表示されますので、そのまま[OK]ボタンをクリックします。マクロの記録ボタンをクリック
  • メニューバーから[編集]⇒[シートの移動またはコピー]を選択します。[シートの移動またはコピー]を選択します
  • [シートの移動またはコピー]ダイアログボックスが表示されますので、[コピーを作成する]チェックボックスをオンにして[OK]ボタンをクリックします。[コピーを作成する]チェックボックスをオンにして[OK]
  • ワークシートがコピーされた事を確認してください。確認後、マクロの記録終了ボタンをクリックします。確認後、マクロの記録終了ボタンをクリック
  • メニューバーから、[ツール]⇒[マクロ]⇒[Visual Basic Editor]を選択します。[Visual Basic Editor]を選択
  • Visual Basic Editorが起動したら、プロジェクトエクスプローラから、[標準モジュール]⇒[Module1]を選択します。ここで、コードウィンドウを確認してください。この部分が記録されたマクロになります。コードウィンドウを確認
  • コードウィンドウ内のマクロはSheet1をコピーしてSheet1の左側に表示させるというものです。
    Sub Macro1()
    '
    ' Macro1 Macro
    ' マクロ記録日 : 2011/1/30  ユーザー名 :
    '
    
    '
        Sheets("Sheet1").Copy Before:=Sheets(1)
    End Sub
    

    これだと汎用性がありませんので下記のように書き換えます。アクティブシートをコピーしてアクティブシートの右側に表示させるというものです。SubからEnd Subをコピーして、コードウィンドウに貼り付けます。

    Sub sheetcopy()
        ActiveSheet.Copy after:=ActiveSheet
    End Sub
    

    コードウィンドウに貼り付けます

  • [Visual Basic]ツールバーのマクロの実行ボタンをクリックします。[マクロ]ダイアログボックスが表示されますので、ワークシートの[Sheet3]をアクティブにして[sheetcopy]を選択後[実行]ボタンをクリックします。[sheetcopy]を選択後[実行]ボタンをクリック
  • アクティブシートの右側に[Sheet3(2)]としてアクティブシートがコピーされました。[Sheet3(2)]としてアクティブシートがコピーされました

このようにEXCELの操作をマクロに記録し編集を繰り返す事が、VBA (Visual Basic for Applications)を理解する近道ではないかと思います。今回のマクロは【簡単入力マクロ付き数量計算書ver1.12】の中にも組み込んでいますので併せてお試しください。