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 ・・・新着記事一覧を見る

Variantの数値型と文字列型の比較|エクセル雑感(7月1日)
VBAのVariant型について|VBA技術解説(6月30日)
VBAのString型の最大文字数について|エクセル雑感(6月20日)
VBAで表やグラフをPowerPointへ貼り付ける|VBAサンプル集(6月19日)
アクティブシート以外の表示(Window)に関する設定|VBA技術解説(6月17日)
マクロ記録での色のマイナス数値について|エクセル雑感(6月16日)
ツイッター投稿用に文字数と特定文字で区切る|エクセル雑感(6月15日)
日付の謎:IsDateとCDate|エクセル雑感(6月14日)
IFステートメントの判定|エクセル雑感(6月13日)
インクリメンタルサーチの実装|ユーザーフォーム入門(6月12日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
7.繰り返し処理(For Next)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.マクロはどこに書くの(VBEの起動)|VBA入門




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


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



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