支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • excelでマクロを作成する、fun

excelを使いこなせるようになるために、excelなどのoffice製品のプログラミング言語であるVBA(Visual Basic for Applications)を使用して、マクロを作成する学習に取り組んでいます。マクロを組む際に、基本的にsubプロシージャしか使っていなかったので、開発の幅を広げるためにfunctionプロシージャの概要や使い方について学習した内容を紹介します。

マクロについて

複雑なコンピュータでの処理を自動化する技術の総称であり、作業時間の大幅短縮が可能になります。excelだけでなく、officeソフトに標準搭載されています。マクロを作成する際はVBAというプログラミング言語を用います。 具体的に、マクロではセルに関する繰り返し作業(値の取得、設定、文字のサイズ、フォント、色の設定など)、ワークシートに関する繰り返し作業(シートの作成、名前の変更、文字の検索、セルのコピーや貼り付けなど)、ブック全体にに関する繰り返し作業(新規作成、名前を付けて保存、上書き保存など)などができます。

excelでのマクロ作成のやり方

①マクロを作成するには開発タブを押して、visual basicの標準モジュールの中にコードを記入して作成します。デフォルトでexcelのメニューバーには開発タブがないので、まずメニューバーのファイルのオプションをクリックします。

②オプションの左側の欄にリボンのユーザー設定があるので、選択しメインタブの開発の項目にチェックを入れます。表示しているブックに戻り、メニューバーに開発タブが追加されます。

③開発タブを選択し、Visual Basicを押すと、Microsoft Visual Basic for Applicationsの画面が表示され、画面の左の欄(プロジェクト_VBAProject)で右クリックもしくはメニューバーの挿入、標準モジュールを選択するとコードを書くための画面が表示されるので、コードを書くことができるようになります。(もし左側のプロジェクトとプロパティが表示されていない場合はメニューバーの表示、プロジェクトエクスプローラー、プロパティウィンドウを選択すれば表示できます。)

④マクロのコードは「Sub プロシージャ名( ) 処理の内容 End Sub」の形でコードを書きます。(実行をするためには緑色の▷ボタンかF5で可能です。)

マクロを作成するに当たってのVBAの基礎知識

・オブジェクト
VBAでの操作対象を指します。(セル、シート、ブック)

・変数
値などのデータを入れておくことができる箱のようなものです。使用するには宣言が必要です。
Dim 変数名 As データ型(変数宣言のの型)
”変数名は任意の名前で、データ型はString(文字列)、Long(整数)、object(ブック、シート、セル)など複数存在します。

・Rangeプロパティ
Range("A1") → セルA1(A列1行目)
Range("A1").Value → セルA1の値

・Cellsプロパティ
Cells(行,列) → 行:1~、列:1~
Cells(1,1) → セルA1
Cells(1,1).Value → セルA1の値

・シート名でのワークシート指定
WorkSheets("〇").Range("〇").Value = 値
*WorkSheetsを指定しない場合は、現在編集しているシートに自動で指定されます。

・IFステートメント
「If 条件1 Then 処理 End If」
条件によって処理を変えることができます。また”Elself”や”Else” を使用して、複数の条件によって処理を変えることができます。

・Forステイトメント
「For i = 開始数 To 終了数 処理 Next i」
繰り返し処理を開始数から終了数まで行います。

 

functionプロシージャについて

プロシージャには主に、subプロシージャとfunctionプロシージャがあります。(イベントプロシージャもある)前者は戻り値を返しませんが、後者は呼び出し元に戻り値を返すことができるという特徴があります。(functionプロシージャのことをユーザー定義関数ともいいます。)一つのプロシージャの中に処理内容を沢山記入しなければならない複雑なコードを書く際などで、functionプロシージャを使えば処理の内容を各々のfunctionプロシージャに記入することにより、コードの見栄えもよくなりますし、繰り返しの似たような処理を共通化してくれるメリットがあります。functionプロシージャの構文は画像のようになります。

プロシージャ内で様々な処理を行った後で、プロシージャ名に値を格納することで呼び出し元に値を返す事ができます。サンプルコードで解説します。Long型の引数を一つ受け取り、戻り値としてString型の値を返すようなfunctionプロシージャ(呼び出し先)と呼びだしたfunctionプロシージャから受け取った値を"kekka"に格納し、指定したセルに"kekka"の値を表示します。実行すると以下のような結果になります。

まとめ

excelを使いこなせるようになるには、学習した機能や技術をとにかく実践して覚えるしかありません。この記事をexcel学習の参考にしてもらえれば幸いです。