Excelマクロで出来ることをサンプルVBAで感じ取ろう!

スポンサードリンク

Excelのマクロは作業の自動化や効率化に大変便利なのですが、マクロに馴染みが無い方、これからマクロを使ってみようという方にとっては、どう便利なのか、何が出来るのか、なかなかイメージし辛いかもしれませんね。

今回はそんな方に向けて、ほんの一例ではありますが、Excelマクロで出来ることを紹介したいと思います。

この記事内で、サンプルとしてVBAが記述されたbasファイル、左記のものが入ったExcelファイルをダウンロードできるようにしています。是非実際に触れてマクロを感じて見てください。

basファイルの使い方や、Excelでマクロを実行する方法などは関連記事がありますので、それは何?と思われた方、これらの記事にも目を通してみてください。

それでは、本編スタートです!

スポンサードリンク

Excelマクロで出来ることとは?

Excelのマクロを使うと何ができるのか。難しいことは置いておいて、まずはマクロに触れてみましょう!下のリンクからデモを行うbasファイル、Excelファイルがダウンロードできますので、お好きな方をダウンロードして、マクロを実行してみてください。

 

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!をフォローしよう!

スポンサードリンク

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

話題をチェック!

  1. 2018-11-1

    Excelマクロ(VBA)で複数のシート上のグラフに同一の処理を行うには?

    Excelファイル内に複数のシートがあり、この中にグラフがいくつも入っているとします。 これら…
  2. 2018-9-30

    Excelの関数を使ったデータ比較法!INDIRECTとMATCHを活用する!

    最新データと一週間前のデータにどんな違いがあるのか比較してチェックしたい! でも、ひとつひとつ…
  3. 2018-7-16

    Excel マクロ(VBA)でグラフ(散布図)を大量自動作成!

    Excelはグラフを簡単につくれるのも魅力ですが、つくらなければいけないグラフが多いと、この作業も大…
ページ上部へ戻る