VBA再入門
第9回.関数という便利な道具(VBA関数)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2019-12-13

第9回.関数という便利な道具(VBA関数)


プログラミング言語であるVBAには、多くの人が共通して必要となる機能が用意されています。
その用意されている機能は関数と呼ばれるものです、


関数は皆が共通して必要とする機能を盛り込んだ小さなプログラムです。
関数を使わなければできない事も多くありますし、関数を使う事で長いプログラムを書かなくて済む事になります。

マクロVBAが上達するという要素の一つに、関数を上手に使えるようになるという事があります。
以下は、これだけは知っておきたい関数の一覧です。

これだけは覚えておきたい必須VBA関数

関数名 機能
Left 文字列の左端から指定した文字数分の文字列を返します
Right 文字列の右端から指定した文字数分の文字列を返します
Mid 文字列から指定した文字数分の文字列を返します
Len 指定した文字列の文字数または指定した変数に必要なバイト数の値を返します
Replace 指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返します
StrConv 指定された変換方式で変換した文字列を返します
InStr ある文字列 (string1) の中から指定した文字列 (string2) を検索し、最初に見つかった文字位置 (先頭からその位置までの文字数) を返します
IsDate 式を日付に変換できるかどうかを調べ、結果をブール型 (Boolean) で返します
IsNumeric 式が数値として評価できるかどうかを調べ、結果をブール型 (Boolean) で返します
Date 現在のシステムの日付の値を返します
DateAdd 指定された時間間隔を加算した日付を返します
DateDiff 2 つの指定した日付の時間間隔の値を返します
DateSerial 引数に指定した年、月、日に対応する日付を返します
Year 年を表すバリアント型 (内部処理形式 Integer の Variant) の値を返します
Month 1 年の何月かを表す値を返します
Day 月の何日かを表す 1~31 の範囲の整数の値を返します
Format 式を指定した書式に変換し、その文字列を示す値を返します
InputBox 文字列型 (String) の値を返します。ダイアログ ボックスにメッセージとテキスト ボックスを表示し、文字列が入力されるか、またはボタンがクリックされると、テキスト ボックスの内容を返します
MsgBox 整数型 (Integer) の値を返します。ダイアログ ボックスにメッセージを表示し、ボタンがクリックされるのを待って、どのボタンがクリックされたのかを示す値を返します

VBA関数はもっとたくさんあって150個くらいあります。
その中で、とりあえず、このくらい知っていればなんとかなるだろうという20個を厳選しました。


関数は、いきなり全部覚えようなどと思っても覚えられるものではありませんので、
必要に応じて、都度使える関数を増やしていけば良いです。

ただし、どんな関数があるか知らないと、VBAを書く上での発想がわかないので、ざっとどんな関数があるかだけ見ておくようにして下さい。
関数を自在に使えるという事が、マクロを自在に書けるということでもあります。

VBA関数の全一覧は、以下をご覧ください。
※VBA関数一覧
VBA関数の一覧と解説です、どんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば、詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 分岐…3 型変換…14 データ判定…10 日付時刻…20 配列…6 ファイル操作…14 数学/財務…28 その他…18 MicrosoftDocsOfficeV…

VBA関数の練習

VBA関数の問題
エクセルVBA 入門問題

A列のデータに対して、B列に書いてある処理を行った結果をC列に出力してください。

回答VBAコード
エクセルVBA 入門コード

VBA実行結果
エクセルVBA 入門問題


VBAの解説
Cells(2, 3) = Format(Cells(2, 1), "yyyymmdd")
Format(対象文字数値, 表示書式指定文字)
表示書式指定文字は様々な文字があります。
簡単に調べるには、
セルの書式→表示形式→ユーザー定義
ここでの指定と、ほぼ同様(違う部分があります)なので、これを参考にしてください。

Cells(3, 3) = InStr(Cells(3, 1), "再")
InStr(対象文字, 調べる文字)
シート関数のFIND関数と同様と考えてください。

Cells(4, 3) = StrConv(Cells(4, 1), vbKatakana)
StrConv(対象文字, 変換方式)
変換方式は、

vbUpperCase 文字列を大文字に変換します。
vbLowerCase 文字列を小文字に変換します。
vbProperCase 文字列の各単語の先頭の文字を大文字に変換します。
vbWide* 文字列内の半角文字 (1 バイト) を全角文字 (2 バイト) に変換します。
vbNarrow 文字列内の全角文字 (2 バイト) を半角文字 (1 バイト) に変換します。
vbKatakana 文字列内のひらがなをカタカナに変換します。
vbHiragana 文字列内のカタカナをひらがなに変換します。
vbUnicode システムの既定のコード ページを使って文字列を Unicode に変換します。
vbFromUnicode 文字列を Unicode からシステムの既定のコード ページに変換します。

Cells(5, 3) = Replace(Cells(5, 1), "再", "に")
InStr(対象文字, 検索文字, 置換文字)
シート関数のSUBSTITUTE関数と同様と考えてください。

ExcelマクロVBA入門の対応ページ

第44回.VBA関数について
ワークシートに関数があるように、マクロVBAにも専用の関数が用意されています、このマクロVBA専用の関数をVBA関数と呼んだりします。関数とは、多くの人が共通して必要となる機能(命令)を一塊にしてプログラミング言語として用意されているものです。

第45回.VBA関数(Format)
VBAのFormat関数は、指定した書式に変換した文字列を返す関数で、ワークシート関数のTEXT関数とほぼ同様の機能になります。Format関数は、非常に使用頻度の高い関数でありマクロVBAにおいては重要かつ必須習得関数です。Format関数はしっかと使えるようにしておきましょう。

第46回.VBA関数(日付,DateAdd)
データ型の中でも日付時刻はかなり特殊であり、関数の使用は必要不可欠になります。ここでは、日付に関するVBA関数の一覧と、DateAdd関数について解説します。DateAdd関数以外の他の関数は、一覧のリンクより個別のページを参照して下さい。

第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
文字列操作は、マクロVBAでプログラミングする上で必須です、データ整形、データクレンジング、データクリーニング、これらを行うVBAにおいて不可欠なものが、文字列操作関数です。ここでは、文字列操作に関するVBA関数の一覧と Replace関数、InStr関数、StrConv関数について解説します。

第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
VBA関数の中で、日付関数、文字列操作関数以外でマクロVBAにおいてはぜひ押さえておいてほしい関数の一覧です。数学、データ型確認、データ型変換に関するVBA関数になります。一覧と、その中から注意点のある関数についてのみ一部説明します。



同じテーマ「VBA再入門」の記事

第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
第7回.セルの値によって計算を変える(Ifステートメント)
第8回.表範囲をまとめて消去する(OffsetとClearContents)
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
第14回.セルの書式を設定する(NumberFormatLocal,Font,Barders,Interior)
第15回.手作業で出来なければマクロは書けない
第16回.エクセルの機能を上手に使う


新着記事NEW ・・・新着記事一覧を見る

トランザクション処理|SQL入門(12月11日)
インデックスを作成して高速化(CREATE INDEX)|SQL入門(12月9日)
他のテーブルのデータで追加/更新/削除|SQL入門(12月8日)
データの削除(DELETE)|SQL入門(12月7日)
データの更新(UPDATE)|SQL入門(12月6日)
複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月5日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 関数という便利な道具(VBA関数)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
    掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ