マクロとVBAを使ってみよう!
はじめに
「VBAとは?」、「マクロとVBAの違いは?」というVBA初心者向けに、VBAとマクロの違いからVBAの使い方についてご紹介します。 今回ご紹介するのは、以下のラインナップとなります。
- マクロ vs. VBA
- VBAを使ってみよう
マクロ vs. VBA
「マクロ」とは、ある一連の操作をあらかじめ登録しておき、何度でも実行可能な機能のことです。
「セルを選択→データ修正→データコピー→別シートに張り付ける」という作業を1,000データ分行うとします。この一連の流れは1データあたり10秒かかるとして、全データ終わるのに約3時間(10,000秒)かかってしまいます。このような単純作業に3時間取られるのは、時間がもったいないと思いませんか?
また、手作業で行うので、ミスが発生する危険性も十分にあり得ます。
そこで、使用するのがマクロです。
マクロを使用することで、次のようなメリットがあります。
- 生産性向上 手作業だと、数十分~数時間かかる処理を、数秒~数分に短縮できる可能性があります。
- 作業の正確さ 比較的単純な処理ならば、まずミスは発生しません。
その分時間ができ、生産性が向上します。
複雑な内容の処理だと、人為的なバグが入る危険性もありますが、発生したミスにもある一定の規則性があります。 その規則性さえ見つけてしまえば、簡単に修正できます。
マクロは、簡単なものならば、実際に行った操作をそのまま記録することで作成できます。
しかし、複雑な自動処理(例えば、何度も繰り返す、条件分岐など)は、マクロで記録することはできません。
これは、マクロの弱点とも言えます。
このマクロの弱点を補うものこそ、VBAです。
VBAは、「Visual Basic for Applications」の略で、「アプリケーション用Visual Basic(VB)」という意味です。
元々VBというプログラミング言語があり、VBと同じ文法を備えつつ、Officeアプリのマクロ用に改良されたものが、VBAというわけです。
Excelのほぼ全ての機能を利用した高度で複雑なプログラミングを行うことが可能です。
VBAを使ってみよう
1.【開発】タブをリボンに表示する
VBAを利用するには、まず【開発】タブをリボンに表示する必要があります。 開発タブの表示手順は、次の通りです。
開発タブの表示手順
2.マクロを記録する
マクロを記録するには、2パターンあります。
マクロ記録方法
(1)【開発】タブの「マクロの記録」から記録する
(2)「マクロ記録ボタン」から記録する
マクロの記録をクリックすると、この画面が出てきます。 「マクロ名」に任意の名前を付けます。
3.マクロを実行する
今回は、この表を作成・コピーし、別シートに張り付けるマクロを実行していきます。 マクロの実行は、「【開発】タブ→マクロ→任意のマクロ名を選択する→実行をクリック」で行えます。
記録したマクロの中身(VBA)は、「Alt + F11」もしくは「【開発】タブ→マクロ→任意のマクロ名を選択する→編集をクリック」、「【開発】タブ→Visual Basic」で確認することができます。
VBAは、「標準モジュール→Module*(*:数字)」に記述されています。
参考までに今回記録したマクロのVBAを記載しておきます。
このコードを「【開発】タブ→マクロ→マクロ名入力→作成をクリック」で作成されるVBAを記述する箇所に張り付けるとマクロとして使用できます。
'
' 表作成 Macro
' 表を作成・コピーして、別シートに張り付けます。
'
'
ActiveCell.FormulaR1C1 = "名前"
ActiveCell.Characters(1, 2).PhoneticCharacters = "ナマエ"
Range("B2").Select
ActiveCell.FormulaR1C1 = "点数"
ActiveCell.Characters(1, 2).PhoneticCharacters = "テンスウ"
Range("A3").Select
ActiveCell.FormulaR1C1 = "A"
Range("B3").Select
ActiveCell.FormulaR1C1 = "46"
Range("A4").Select
ActiveCell.FormulaR1C1 = "B"
Range("B4").Select
ActiveCell.FormulaR1C1 = "81"
Range("A5").Select
ActiveCell.FormulaR1C1 = "C"
Range("B5").Select
ActiveCell.FormulaR1C1 = "73"
Range("A6").Select
ActiveCell.FormulaR1C1 = "D"
Range("B6").Select
ActiveCell.FormulaR1C1 = "58"
Range("A2:B6").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("A2:B2").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
Range("A2:B6").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("A2").Select
ActiveSheet.Paste
Range("A2").Select
End Sub
最後にVBAやマクロを使用する上でいくつかの注意点をご紹介します。
《マクロ注意点》
- マクロを含むブックは、「Excel マクロ有効ブック(*.xlsm)」で保存する
- 悪意あるプログラムが書かれたマクロが存在する ウイルス感染を防ぐため、Excelでブックを開いた時点では、マクロが無効になっています。 危険性のないマクロであるとはっきりわかる場合は、「コンテンツの有効化」ボタンをクリックしてマクロの有効化を行ってください。
まとめ
「マクロ vs. VBA」、「VBAを使ってみよう」についてご紹介しました。 マクロやVBAはExcelの作業効率を格段に上げてくれるものなので、是非使ってみてください。