Excelマクロ&vba[実践ビジネス入門講座]解説| IFとは?
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
条件分岐について
条件分岐とは、条件の結果によって異なる処理を実行する仕組みです。
例) 明日は休日か?
Yes → 夜更かしして映画を観る
No → 寝る
上のようにYesかNoで実行する処理を決めます。
マクロの処理で例えるなら、
もしA1セルの数値が10以上であれば、
A1セルを青色に塗る。
違えば、
A1セルを赤色に塗る。
このようなコードを組んで、作業を自動化させます。
条件分岐はマクロではとても重要な役割を果たすのでしっかりと理解しましょう。
逆に、条件分岐を理解できれば、マクロをほとんど習得したようなものです。
IF構文
IFとは、エクセルの関数でもあるように、
もし、○○なら→△△を実行する
それ以外なら→■■を実行するという意味になります。
マクロでIFを使えるようになると、
セルを削除するや、シートの名前を変更する、シートを追加するといった、
関数ではできない処理が行えるようになります!
例えば、売上表を対象として、売上高が10万円未満のセルは削除することや、
10万円以上の売上高があれば、新しいシートを作成し、コピーするなどの処理が可能になります。
IFステートメントの記述方法
上記で説明したIF文の記述方法をご紹介します。
IF 条件式 Then
処理の内容
End If
これが条件分岐の構文となります。
はじめに説明したA1の数値が10以上ならセルを青色にする
という処理をマクロで記述すると、
IF Range("A1") >= 10 Then
Range("A1").Interior.Color = vbBlue
End If
条件を記述する比較演算子は下記表をご参考ください。
”.Interior.Color” はセル背景の色という意味で、
”.Interior.Color = vbBlue”のように、色を=で指定します。
基本的には”vb+ 色”と記述すればその色になります。(vbRedやvbBlackなど)
次に条件式がYesなら○○、Noなら△△という処理の記述方法をご紹介します。
IF 条件式 Then
条件式がYesの場合に処理する内容
Else
条件式がNoの場合に処理する内容
End If
A1セルの数値が10以上であれば、A1セルを青色に、
違えば赤色に塗るという処理内容を紹介します。
IF Range("A1") >= 10 Then
Range("A1").Interior.Color = vbBlue
Else
Range("A1").Interior.Color = vbRed
End If
このように、Elseを付け足すだけで簡単にYes Noで処理結果を分けることができます。
複数の条件を組み合わせる方法
先程はもし○○ならAを実行、違えばBを実行という構文を紹介しましたが、
もし○○かつ△△ならや、もし○○もしくは△△なら
というような複数の条件を組み合わせる方法をご紹介します。
AndとOrを使用することで複数条件を組合すことができます。
例)もしA1セルの数値が5以上かつ15以下であれば
コード) If Range("A1") <= 5 And Range("A1") >= 15 Then
例)もしA1セルの数値がB1セルより大きいもしくはB2セルより大きければ
コード) If Range("A1") < Range("B1") Or Range("A1") < Range("B2") Then
このように、複数条件も簡単に書くことができます。
3つ以上の条件を判定して処理する場合
これまで、"条件に合えば処理を行う"、"条件にYesならA、NoならB”の記述方法をご紹介しましたが、
ここでは3つ以上の条件に応じて処理を行う方法をご紹介します。
IF 条件1 Then
条件1がYesの場合の処理
ElseIf 条件2 Then
条件2がYesの場合の処理
ElseIf 条件3 Then
条件3がYesの場合の処理
Else
どれにも該当しない場合の処理
End If
このように、Else Ifとすることで3つ以上の条件に対応可能です。
また、上では条件3までしか書いていませんが、同様に4つ以上も加えることができます。
例) A1セルの数値を判定する。90点以上ならB1セルに"優"、
70点以上なら"良"、60点以上なら"可"、それ以下なら"不可"
If Range("A1") >= 90 Then
Range("B1") = "優"
ElseIf Range("A1") >= 70 Then
Range("B1") = "良"
ElseIf Range("A1") >= 60 Then
Range("B1") = "可"
Else
Range("B1") = "不可"
End If
このようにコードが長くなりますが、複数条件にも対応可能です!
エクセルマクロに関する内容をyoutubeで発信しています。
ぜひご覧ください!
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら
Excelマクロ&vba[実践ビジネス入門講座]| VBA関数
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
VBA関数とは
エクセルで様々な関数が用意されているように、VBAにも独自の関数があります。
ここではVBAで使える関数をいくつか紹介します。
上から順に紹介します。
MsgBox関数
このようにメッセージが表示されます。
具体的な使用例としては、エラー対策として使ったりします。
例えば数字を入力すべきセルに文字が入っていれば、
メッセージで警告するようなイメージです。
Left関数
Range("A1") = Left(abcde,3)を実行すると、
A1セルに"abcdf"の左から3文字、すなわちabcが入ります。
Right関数も当然存在し、Left関数と同じように右から○文字を取り出します。
InputBox関数
InputBox 質問の内容, タイトルと記述します。
InputBox "お住いの住所を入力してください。", "住所調査"これを実行すると、
このようにタイトル・質問が表示され、入力欄に自由に記述することができます。
この関数の使い方としては、
入力された文字に応じて処理を変える場合に使用することがあります。
実務ではそれほど使うことはありません。
Year関数
Range("A1") = Year(now)
上記はNow関数との組み合わせとなります。
nowは現在の日時(2022年1月27日)となり、その日時の年を取り出すので、
A1セルには2022が入ります。
同様に、Month、Day関数もあり、たまに実務で使います。
エクセルの関数を使用する方法
VBA関数だけでなくワークシートで使用するSUM関数やVlookUp関数なども
使用することができます。
VBAで使用する際は、"WorksheetFunction.ワークシート関数"と入力します。
例 Range("D1") = WorksheetFunction.Sum(Range("A1:C1"))
D1セルにA1~C1の合計を入れることができます。
↓
↓
ちなみにWorksheetFunction.まで記述すると予測変換がでてきますので、
簡単に調べることができます。
エクセルマクロに関する内容をyoutubeで発信しています。
ぜひご覧ください!
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら
Excelマクロ&vba[実践ビジネス入門講座] 解説 | 計算式と演算子
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
演算子について
マクロで計算式を記述する場合、記号を使用します。
実務で頻繁に使用する演算子は足し算・引き算・割り算・掛け算なので、
その4つは覚えておきましょう。
エクセルの数式でも同じ書き方をするので、それほど難しくはないと思います。
例
Range("A1").Value = 20 * 5
変数を組み合わせた場合
Dim i as Long
i = 5
Range("A1").Value = 20 * i
このような書き方もできます。
文字列を連結する場合
先ほどは足し算で+を使用していましたが、
実は 文字列 + 文字列で、文字同士を連結されることができます。
例
"マクロを" + "実行します"
ただし、+ は足し算にも使われるので、文字列を連結される場合は、
「&」を使うことを推奨します。
例
"マクロを" & "実行します"
上の例と結果は同じですが、「&」のほうが見やすいと思います。
Excelマクロ&vba | 変数とは?
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
変数とは
エクセルマクロにおける変数とは、値を入れておく箱と説明されることが多いです。
日常会話で例えるならば、『i Phone 13』という値を『スマホ』という箱に入れておくと、
「私のスマホが~」と会話した場合、スマホという言葉が意味するのは、
androidでもなく、i Phone SEでもなく、i Phone 13になるというようなイメージです。
変数の宣言とデータ型
エクセルマクロで変数を使用する際、変数名とデータ型を宣言する必要があります。
データ型や宣言という言葉が出てきて「??」となっているかもしれませんが、
詳しく解説します。
Dim 変数名 As データ型
変数名= ○○
これが変数を使う際のコードとなります。
この変数名に入る値は基本的には何でも良いので、自分が分かりやすい名前を付けます。(プログラミングの世界では、英単語を使うことが多いです。)
データ型は、いくつかの型が用意されていますので、後程紹介します。
これらを料理に例えると、
Dim 麻婆豆腐 As 中華料理
麻婆豆腐 = 挽肉と赤唐辛子・花椒(ホアジャオ、山椒の同属異種)・豆板醤(トウバンジャン、豆瓣醤)、豆豉(豆豉)などを炒め、鶏がらスープを入れ豆腐を煮た料理。
(wikipediaより引用)
このように、麻婆豆腐は中華料理というデータ型で、麻婆豆腐とは○○と記述するイメージです。
宣言する方法をご紹介したので、次にデータ型をご紹介します。
データ型には様々な種類がありますが、初めに覚えるのは5つだけでよいです。
データ型:Long・・・変数に数値を入れる場合に使用
データ型:String・・・変数に文字列を入れる場合に使用
データ型:Worksheet・・・変数にワークシートを入れる場合に使用
データ型:Workbook・・・変数にワークブックを入れる場合に使用
データ型:Range・・・変数にセル範囲を入れる場合に使用
上記の2つのみ覚えていれば、初めは問題ないと思います。
実例
Dim tax as Long
tax = 0.1
Dim i as Long
i = Range("A1")
i はセルA1に入っている数値となります。(A1セルに文字が入っている場合、エラーになります)
dim tax as String
tax = "消費税"
(文字列を書く場合は、ダブルクォーテーションで囲います。)
dim tax as String
tax = Range("A1")
ちなみにdim と as は小文字で打っても大文字に自動変換されるので、
小文字で打っても構いません。
オブジェクト変数に変数を入れる場合
上記では、
Dim 変数名 As データ型
変数名= ○○
と記述すれば良いと解説しましたが、実は例外があります。
worksheet,workbook,rangeのデータ型の場合、
Dim 変数名 As データ型
Set 変数名= ○○
と「Set」を追記しなければなりません。
実例
dim ws1 as Worksheet
Set ws1 = Worksheets("シート1")
Worksheetの場合、
()の中にはダブルクォーテーションで囲ったシート名を入力するか、数値を入力します。
数値を入れると、左から数えて何番目のシートという意味になるので、
シート名を書かずに楽に記述することができます。
覚えなくてよいもの
初心者が覚えなくてよいものは、
プロシージャレベル変数やモジュールレベル変数の違いです。
これらは実務ではあまり区別することはありませんので、
気にせず勉強を進めましょう。
また定数(Const) も、あまり使用することがないので、気にせず進めましょう。
エクセルマクロに関する内容をyoutubeで発信しています。
ぜひご覧ください!
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら
Excelマクロ&vba[実践ビジネス入門講座] 解説 | 引数とは?
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
引数とは
引数とは、メソッドやプロパティの内容を補助する役割があります。
文章で表すと、修飾語のようなイメージとなります。
引数は1つだけのものもありますが、複数の引数を指定するメソッドもあります。
引数は覚えておくべき?
メソッド名を入力後、半角スペースを入れるとヒントが表示されるので、
覚える必要はありません。
コードを書いていくうちに自然と覚えていくので、
慣れるまでは都度調べるようにしましょう。
例えば、「vba セル削除 左詰め」のように検索すればコードが出てくるので、
引数を覚えなくとも問題ありません。
また、引数名は省略することも可能ですが、
引数が複数ある場合に引数名を省略すると、
見返した際に分かりにくいので、引数名を省略せず、「:=」で記載することが望ましいです。
エクセルマクロに関する内容をyoutubeで発信しています。
ぜひご覧ください!
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら
Excelマクロ&vba[実践ビジネス入門講座] 解説 | オブジェクトとコレクション
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
オブジェクトとは
オブジェクトとコレクションについて、はっきり言って意味を理解しなくても良いです!
マクロ入門や初心者向けと謳っている参考書の初っ端にこのような文言が出てきますが、これらはマクロを実際に使用していく上で理解していきますので、
これらの違いについて悩んでいる方や、早速挫折しそうな方は理解せずに次に進みましょう!
ちなみに、実務でよく使用するオブジェクトとしては、
Workbookオブジェクト・Worksheetオブジェクト・Rangeオブジェクトとなります。
オブジェクトの階層構造について
難しそうに聞こえますが、例えるなら住所のようなものです。
上記の表が住所で例えた場合となります。
コレクションは集合体・オブジェクトは特定のモノ
複数シート全体がWorksheetsコレクション、その中のsheet1がWorksheetオブジェクトとなります。
上記のように住所で覚えておくと、実際に自分でコードを書く際に、
「市町村の後に都道府県がきているのはおかしいな」と違和感を持つことができますのでマクロ初心者の方には覚えやすいかと思います。
Excelマクロ&vba[実践ビジネス入門講座] 解説 | マクロとは
本ブログは、著者国本温子さんの『Excelマクロ&vba[実践ビジネス入門講座]』を解説させて頂くブログとなります。
マクロとは
Excelマクロとは、毎日繰り返し行う作業や面倒な作業を、自動化する機能です。
たとえ簡単な作業であっても、長い目で見たときにかなりの時間を費やすこととなります。
なので、マクロを少しでも使用することができれば日々のエクセル作業がかなり楽になります。
マクロを勉強するにあたって注意すること
マクロを勉強する際、やっておくべきことがあります。
それは、実際にどのような処理を自動化したいかを明確にすることです。
例えば、毎日行う売上データを客先・売上高順に並び変える作業の自動化や、
複数のシートにあるデータをまとめるなど、
どんなことでもよいので、どのような処理を自動化したいかを決めてください。
実査にどのようなことが自動化できるかは、
YouTubeに事例を掲載しているので、ご参考にしてみてください。
自動化したい処理を考えずに勉強を進めてしまうと、
マクロのコード内容を理解したとしても、どのような場合に使用するかを具体的にイメージできないので、途中で挫折してしまいます。
自動化した内容が決まったら、次回はマクロのコードを書いていくための開発タブの設定を行います。
下記記事をご参考ください。
ブログの解説本 Excelマクロ&vba[実践ビジネス入門講座]はこちら