Excelのマクロは作業の自動化や効率化に大変便利なのですが、マクロに馴染みが無い方、これからマクロを使ってみようという方にとっては、どう便利なのか、何が出来るのか、なかなかイメージし辛いかもしれませんね。
今回はそんな方に向けて、ほんの一例ではありますが、Excelマクロで出来ることを紹介したいと思います。
この記事内で、サンプルとしてVBAが記述されたbasファイル、左記のものが入ったExcelファイルをダウンロードできるようにしています。是非実際に触れてマクロを感じて見てください。
basファイルの使い方や、Excelでマクロを実行する方法などは関連記事がありますので、それは何?と思われた方、これらの記事にも目を通してみてください。
それでは、本編スタートです!
Contents
Excelマクロで出来ることとは?
Excelのマクロを使うと何ができるのか。難しいことは置いておいて、まずはマクロに触れてみましょう!下のリンクからデモを行うbasファイル、Excelファイルがダウンロードできますので、お好きな方をダウンロードして、マクロを実行してみてください。
demonstration_of_macro.bas
demonstration_of_macro.xlsm
Excelマクロは、メッセージボックスを表示できる!
デモファイルの実行中、何度かメッセージボックスが表示されましたよね?Excelのマクロを使えば、簡単に、自由にメッセージボックスを表示できるんです。
作業の確認用だったり、ファイルの使用者に注意を促したり、いろいろな使い方ができるメッセージボックス、これが使えると便利です!
また、セルの色を変えたり、フォントを変更したりも超簡単!視認性のいいExcelファイルが自動でつくれるならば、間違いも起こしにくくできそうでしょ?
Excelマクロでセルに値や文字を入力できる!
デモファイルのマクロでは、指定したセルに値や文字を自動で入力させました。このように予め決まりを決めて、その処理をVBAで表現すれば、同じことを、誰でも、何度でも簡単に実施することができますよ。うまく活用すれば、あなたの仕事、楽に済みそうでしょ?
Excelのマクロのいいところは、Excel自身の機能を簡単に使えるところ。上で紹介した文字の入力で、数式を入力すれば、これが入力されたセルでは、Excelの機能で式に従って計算することもできるんです。
となると、VBAで計算の処理を全部表現してしまっても構いませんし、Excelの機能に任せる部分は任せてしまい、自分でプログラムは書かない!なんてマクロの作り方もアリですね!
同じ処理をするマクロでも。作り込みにかけられる時間や予算、こだわり具合に合わせていろいろな作り方ができるというのもExcelマクロの魅力かもしれません。
Excelマクロでセルの数字を読み込んで計算する!
ExcelマクロはVBAという言語で書かれたもの。他の言語で書かれたプログラムと同じ様に、もちろん数値計算できます。
Excelのセルに入った数字を読み込み、これを用いて計算したり、デモの中には含まれていませんが、外部のテキストファイルやCSVファイル、Excelファイルなどに入ったデータを読み込んで計算をしたりもお手のものです!
計算の手順や内容は、マクロにきっちりと書かれていますので、だれが行っても、いつやっても、計算間違いなく同じ結果が出てきます。
毎回電卓で計算し、検算のため、もう一度同じように電卓を叩く、なんてことも必要ありません。電卓では一度クリアしてしまうと計算結果や計算式が消えてしまいますが、Excelならばこれらがしっかりと残せます。ということは検算もやりやすいということですよね?
Excelマクロで、独自の関数も簡単作成!
デモのマクロでは、waという名前のオリジナルの関数をいれました。この関数サンプルなので、2つの数字を足すだけという超がつくほどシンプルな関数ですが、もっともっと複雑な関数も作れます。
作った関数は、マクロ内でも使用できるのですが、デモのようにExcelのセルに関数を書いて、Excel備え付けの関数(例えば、合計値を求めるsumや平均値を求めるaverageなど)と同じ様に使えるのもExcelマクロ独特で嬉しい機能です。
Excelマクロで条件分岐や繰り返し処理も一発完了!
プログラムを書いて処理を行う上での最大の利点は、同じような処理を一気に片付けられうところだと思います。この利点をうまく利用して、時間がかかってしょうがなかった手作業による処理を高速に処理するというのが、マクロをつかう醍醐味です。
また、Excelマクロでは条件を設定して、これを満足するか、しないかを判断させ、その結果に応じて処理をかえるということもできます。
この繰り返しと条件分岐を組み合わせれば、かなりのことをExcelマクロに任せることができるのではないかなと思います。
これらの機能、あなたにとって強い見方になることでしょう!
まとめ
今回は、デモ用のExcelマクロを用いてExcelが出来ることを体感していただきました。まったくマクロを使ったことがなかったあなた!いかがだったでしょう。便利そうだというイメージを持っていただけたなら幸いです。
このマクロの中には、
- メッセージボックスを表示
- セルの書式を変更
- セルに文字、数字を入力する
- セル内の値や書式をクリアする
- セルの数字を読み込む
- 計算させる
- 条件判断させる
- 繰り返し処理する
- 関数を定義する
といった基本的なVBAでの表現を散りばめました。
プログラムも利用できるようにしましたので、これまでマクロを使ったことなかったという方も、これらの機能はもうあなたのものです。
プログラム内の該当部分をコピーして、あなたのExcelシートのセル位置に合わせたりといったあなた用のカスタマイズをして利用してみてくださいね。
デモプログラムのソース
Attribute VB_Name = "Module1" '*********************************************************** '** 仕事サクサク!定時退社のために EXCEL GO! GO! '** (URL:https://excelgogo.net/) '** 是非ご活用ください♪ '*********************************************************** Dim A As Double, B As Double Sub マクロを感じる() Dim i As Integer Dim Answer As Double Range("A1:W1000").Select Selection.ClearContents '選択範囲のセル内のデータをクリア Selection.ClearFormats '選択範囲の書式をクリア Range("A1").Select ' '####メッセージボックスの表示### MsgBox "Excelマクロで作業時間短縮!定時で帰るぞ!", , "メッセージが表示できます!" ' '###セルに文字列を入力### MsgBox "セルにも好きなように入力出来ます!", , "メッセージが表示できます!" Cells(1, 1) = "●セルに好きなように入力出来ます!" Cells(2, 2) = "Excelマクロで作業時間短縮!定時で帰るぞ!" Range("A1:G1").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With Selection.Font.Bold = True Range("A1").Select ' '###セルのデータを読み込んで計算、計算結果を出力### MsgBox "もちろん計算も出来ますよ!", , "Excelですから" Cells(4, 1) = "●もちろん計算も!" Range("A4:G4").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With Selection.Font.Bold = True Range("A1").Select Cells(5, 2) = 2395 Cells(6, 2) = 5697 ' Cells(5, 3) = "← この数字と" Cells(6, 3) = "← この数字を読み込んで" A = Cells(5, 2) B = Cells(6, 2) Answer = A + B Cells(7, 2) = Answer Cells(7, 3) = "← 足し算した結果を出力しました" ' '###入力する文字列を式にして、Excelに計算させる### Cells(9, 2) = "=B6+B7" Cells(9, 3) = "← セルに式を打ち込んで計算させたり、" ' '###オリジナルの関数を使って計算し結果を出力### Cells(10, 2) = "=wa(B6,B7)" Cells(10, 3) = "← あなたオリジナルの関数を作って計算させたりも可能!" ' '###IFを使った条件分岐### Cells(12, 1) = "●条件に合致するかの判断も可能!" Range("A12:G12").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With Selection.Font.Bold = True Range("A1").Select Cells(13, 2) = A & "は" & B & "より大きい?" MsgBox "2395は5697より大きい?", , "次はマクロに判断させます!" MsgBox "どうなんだい!", , "大きければ○、小さければ×" If A >= B Then Cells(13, 5) = "○" Cells(13, 5).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Selection.Font.Bold = True Else Cells(13, 5) = "×" Cells(13, 5).Select With Selection.Font .Color = -10477568 .TintAndShade = 0 End With Selection.Font.Bold = True End If ' '###For Next文を使った繰り返し処理### Cells(15, 1) = "●繰り返し処理するのが得意!" Range("A15:G15").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 5287936 .TintAndShade = 0 .PatternTintAndShade = 0 End With With Selection.Font .ThemeColor = xlThemeColorDark1 .TintAndShade = 0 End With Selection.Font.Bold = True Range("A1").Select MsgBox "行くぞー!Are You Ready?", , "そして繰り返し処理が得意" For i = 1 To 50 If i <> 10 Then Cells(15 + i, 2) = A & "は" & B & "より大きい?" If A >= B Then Cells(15 + i, 5) = "○" Cells(15 + i, 5).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Selection.Font.Bold = True Else Cells(15 + i, 5) = "×" Cells(15 + i, 5).Select With Selection.Font .Color = -10477568 .TintAndShade = 0 End With Selection.Font.Bold = True End If Else Cells(15 + i, 2) = B & "は" & A & "より大きい?" If B >= A Then Cells(15 + i, 5) = "○" Cells(15 + i, 5).Select With Selection.Font .Color = -16776961 .TintAndShade = 0 End With Selection.Font.Bold = True Else Cells(15 + i, 5) = "×" Cells(15 + i, 5).Select With Selection.Font .Color = -10477568 .TintAndShade = 0 End With Selection.Font.Bold = True End If Cells(15 + i, 6) = "← ここだけちょっと変化球 :D" End If Next Range("A1").Select MsgBox "こういった処理を組み合わせて、あなたに変わって働きます!", , "ほんの一例ですが…" MsgBox "Thank You for Your Attention!", , "fin." End Sub Function wa(A, B) As Double wa = A + B End Function
最新情報をお届けします
Twitter でExcel GO! GO!をフォローしよう!
Follow @go_excelコメント
この記事へのトラックバックはありません。
この記事へのコメントはありません。