EXCEL VBA REGLECASSE YU SATO
目次 はじめに 開発タブの表示 拡張子 VBEの起動と初期設定 モジュールの挿入 削除 プロジェクト モジュール プロシージャ 変数の宣言 (Dim) If~Then For~Next 応用 :If~ThenとFor~Next ボタンの作成 最後に Subプロシージャ 基本説明 セルの指定 (Range) 変数とデータ型 (String,Long)
はじめに VBAとはVisual Basic for Applicationsの略で MicroSoft Officeシリーズに搭載されているプログラミング言語である Word,Excel,Access,PowerPointなどありますが 今回はExcelに特化して説明していきます プログラミングは分からなくても Excelが多少分かる方であれば取り組みやすいと思います 記載している内容は割愛している部分多いですが VBAに興味を持って頂けることに重点を置いているので 少しでもきっかけになれたら幸いです それでは まずExcelを開きましょう
開発タブの表示 メインタブに 開発 が無い場合は ファイル オプション リボン ユーザー設定 からメインタブの開発にチェックを入れて OK をクリックし てください オプション画面 開発 がなければ 表示させてください
拡張子 Excel2007以降 VBAをブックに保存する際は 拡張子を.xlsm で保存する必 要があります(Excel2003は.xls でOK) まずExcelのブックを 名前を付けて保存 ( F12キー を押下)で任意のファイ ル名を入力したら ファイルの種類を Excel マクロ有効ブック(*.xlsm) にし て 保存をします 拡張子 説明.xls Excel2003までのExcelファ イルに付く拡張子.xlsx Excel2007以降のExcelファ イルに付く拡張子.xlsm Excel2007以降のExcelファ イル マクロ付き に付く 拡張子
VBE の起動と初期設定 VBA プログラムを表示するには Visual Basic Editor( 以下 VBE) を使います VBE を起動するには Alt キー + F11 キーを押下して起動します メニューより ツール オプション 自動構文チェック のチェックをはずし 変数の宣言を強制する にチェックを入れて OK を押下してください
モジュールの挿入 削除 メニューより 挿入 標準モジュール を選択します 挿入画面 モジュールを削除する場合は モジュールを右クリック Module1の解放 を選択し エクスポートは いいえ を 選択すれば削除できます モジュール名によって変わる
プロジェクト モジュール プロシージャ プロシージャ モジュール プロジェクト プロシージャ プロジェクトモジュールプロシージャのイメージ図
SUB プロシージャ Sub で始まり End Sub で終わります この間に実際のプログラムを記述します そしてプロシージャを識別するために Sub の後ろにプロシージャ名を記述します プロシージャ名はアルファベット ひらがな 漢字などを使えます 数字も使えますがプロシージャ名の先頭には文字を使わなければなりません またアンダーバーは使えますが記号やスペースなどは使えません 2バイト文字 ( ひらがな 漢字 ) は使用できますが あまり好ましくないので使用は避けましょう プロシージャ名
基本説明 まず図 1の様に入力し プロシージャ内でカーソルを合わせ F5 キーを押下すると アクティブになっているシートが図 2の様になります 1 行ずつ実行する場合は F8 キー( ステップ実行 ) を押下してください VBAでは 記号の = は2つの意味を持ちます 1. 右辺と左辺が等しい 2. 右辺を左辺に代入する図 1の場合は 2の 右辺を左辺に代入する になります 文字列は レグルカセ の様にダブルクォーテーションで括ります 数値は ダブルクォーテーションで括る必要はありません 図 1 図 2
セルの指定 (RANGE) Range( A1 ) は A1セルを指定します Range( A1:C5 ) は A1セルからC5セルを範囲指定します ( 図 3) Range( A1, C5 ) は A1セルからC5セルを範囲指定します ( 図 3) Range( A1,C5 ) は A1セルとC5セルを範囲指定します ( 図 4) Range( A:A ) は A 列を範囲指定します Range( 1:1 ) は 1 行目を範囲指定します ここでは Cells,Columns,Rows の説明は割愛します 図 3 図 4
変数とデータ型(LONG, STRING) 変数とは 数値や文字列などを一時的に格納する入れ物 下の図の様に色々とありますが 最初はLongとStringを覚えていれば問題ないです データ型 名称 格納できる範囲 Integer 整数型 -32,768 32,767 Long 長整数型 -2,147,483,648 2,147,483,647 Single 単精度浮動小数点数型 -3.402823E38-1.401298E-45(負の値) 1.401298E-45 3.402823E38(正の値) Double 倍精度浮動小数点数型 -1.79769313486232E308-4.94065645841247E-324(負の値) 4.94065645841247E-324 1.79769313486232E308(正の値) Currency 通貨型 -922,337,203,685,477.5808 922,337,203,685,477.00 String 文字列型 最大約20億文字まで Date 日付型 西暦100 年1月1日 西暦9999年12月31日までの日付と時刻 Boolean ブール型 真 (True) または偽 (False) Object オブジェクト型 オブジェクト Variant バリアント型 すべてのデータ
変数の宣言 (DIM) 変数を使用するには 宣言する必要があります Dim 変数名 As データ型 変数名について Subプロシージャのプロシージャ名の説明とほぼ同じなので割愛しますが 後から見ても分かるようなものにしましょう データ型について 前のページの表の通り 数値はLong 文字列はString 分からなければVariantを使いましょう 処理の流れ 変数の宣言 値を変数に代入 変数をセルに代入
IF~THEN_1 If~Then は条件分岐をすることが出来ます If 条件式 Then End If 条件式を満たした場合の処理 条件式は = や不等号などを使います ( 他にも not,like,and,or などあります ) = は基本説明で説明した 1. 右辺と左辺が等しい になります もし A1 セルが レグルカセ だったら B1 セルに 1 C1 セルに OK にする
IF~THEN_2 If~Then の条件分岐を複数させる場合 If 条件式 1 Then 条件式 1を満たした場合の処理 ElseIf 条件式 2 Then 条件式 2を満たした場合の処理 Else 条件式 1と条件式 2を満たさなかった場合の処理 End If ElseIf は複数回使用できます 次ページで詳細を説明いたします
IF~THEN_3 もし A1 セルが レグルカセ だったら B1 セルを 1 C1 セルを OK にするもしくは A1 セルが れぐるかせ だったら B1 セルに 2 C1 セルに 全部ひらがな にする上記の 2 つの条件を満たさない場合は C1 セルを NG にする
FOR~NEXT_1 For~Next は指定した回数同じ処理を繰り返したい場合に使用します For カウント用変数 = 最初の値 To 最後の値 Step 増加値 ( 繰り返したい処理 ) Next カウント用変数 カウント用変数について 数値の変数を使用します 最初の値 最後の値は 数値を使用します ( 数値の変数でも可 ) Step 増加値は省略可能ですが 増加値を1 以外に設定する場合は必要です Nextの後のカウント用変数は省略可能です
FOR~NEXT_2 For~Next の処理詳細 i が 1,2,3,4,5 とインクリメントされます Range( A1 ) = レグルカセ Range( A2 ) = レグルカセ Range( A3 ) = レグルカセ Range( A4 ) = レグルカセ Range( A5 ) = レグルカセ 処理内容は上記と同じです
応用 :IF~THEN と FOR~NEXT 応用として If~Then と For~Next を併せて使用するコードを紹介します A1 セルから A5 セルの間に レグルカセ があれば 同じ行の B 列に OK と入力し レグルカセ ではない場合は 同じ行の B 列に NG と入力する
ボタンの作成 Excelシート内に作成したプロシージャを起動するボタンを作成します 図5のメニューの 開発 挿入 ボタン をクリック後に図形の挿入と同 じ要領でシート内に作成すると 図6がポップアップ表示されます 作成したプロシージャを選択 OK を選択すると図7の様になります 図5 図6 図7 VBE画面でのF5キー実行がシート内で出来る 様になります
最後に 資料の誤記 VBAに関するご質問などございましたら お気軽に下記の連絡先にお問い合わせください WADAX:y_sato@reglecasse.co.jp Slack:y_sato 業務の作業効率化 工数削減のお役立てればと思います 今後 VBAが上達し客先などで使用する場合は テストケースを作成のうえ 十分にテストをしてからリリースしてください レグルカセ 佐藤 悠