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

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
公開日:2015-09-07 最終更新日:2020-09-26

第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 その他……

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), "再", "に")
Replace(対象文字, 検索文字, 置換文字)
シート関数のSUBSTITUTE関数と同様と考えてください。

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

第44回.VBA関数について
・VBA関数の書き方 ・関数の戻り値を使わない場合 ・名前付き引数 ・○○○B関数 ・○○○$関数 ・ワークシート関数との関係 ・自動メンバ表示 ・習得すべき関数 ・最後に

第45回.VBA関数(Format)
・Format関数 ・日付/時刻表示書式指定文字 ・数値表示書式指定文字 ・文字列表示書式指定文字 ・Format関数の使用例 ・※セルに出力する場合 ・最後に

第46回.VBA関数(日付,DateAdd)
・日付時刻に関するVBA関数の一覧 ・DateAdd関数の構文 ・DateAdd関数の使用例

第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
・文字列操作に関するVBA関数の一覧 ・Replace関数 ・InStr関数 ・StrConv関数 ・最後に

第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
・数学VBA関数の一覧 ・データ型確認のVBA関数一覧 ・データ型変換のVBA関数一覧



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

第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)

・表の最終行を取得する ・表の最終行まで繰り返す ・VBAの文法を覚える必要があるか ・ExcelマクロVBA入門等の対応ページ
第7回.セルの値によって計算を変える(Ifステートメント)
・Ifの説明用のサンプル ・マクロVBAでのIfの使い方 ・Ifステートメントの書き方 ・Ifのネスト(入れ子) ・AndとOr ・ElseIfとSelect Caseについて ・マクロVBAは、プログラミングです ・Ifステートメントの練習問題 ・改行方法について ・ExcelマクロVBA入門等の対応ページ
第8回.表範囲をまとめて消去する(OffsetとClearContents)
・見出しを残しデータ部分のみ消去 ・Offsetを使って範囲をずらす ・データ範囲に関係なく消去する場合 ・ExcelマクロVBA入門等の対応ページ
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
・マクロVBAでのワークシート関数の使い方 ・長いスペルの単語を簡単に入れる方法 ・ワークシート関数を使ってみよう ・ワークシート関数を使う時の注意点、エラー対策 ・ExcelマクロVBA入門等の対応ページ
第11回.分からない事はエクセルに聞く(マクロの記録)
・マクロの記録の使い方 ・実際に分からない事を調べる時の手順 ・「分からない事はエクセルに聞く」のまとめ ・ExcelマクロVBA入門等の対応ページ
第12回.エクセルの言葉を理解する(オブジェクト、プロパティ、メソッド)
・VBAが表示するメッセージ ・オブジェクト、プロパティ、メソッド ・プロパティとメソッドの違い ・オブジェクトの階層(親子構造) ・プロパティの省略 ・エクセルの言葉であるVBAを日本語に翻訳する ・最終行取得のコードを訳してみる ・VBA用語を覚えることについて ・ExcelマクロVBA入門等の対応ページ
第13回.セルのコピペ方法を知る(CopyとPaste、さらに)
・セルをコピーして貼り付け ・セルをコピーして値貼り付け ・セルをコピーして書式貼り付け ・PasteSpecial(値貼り付け、書式貼り付け等)の細かい指定 ・もっと簡単なコピペ方法はないものか ・もっと効率的な「セルをコピーして貼り付け」 ・マクロならではの「値のコピー」 ・「セルのコピペ方法を知る」のまとめ ・ExcelマクロVBA入門等の対応ページ
第14回.セルの書式を設定する(NumberFormatLocal,Font,Borders,Interior)
・「セルの書式設定」ダイアログ画面 ・表示形式 ・フォント ・罫線 ・塗りつぶし ・「セルの書式を設定する」のまとめ ・ExcelマクロVBA入門の対応ページ
第15回.手作業で出来なければマクロは書けない
・エクセルの機能を知る ・ワークシート関数を知る ・「手作業で出来なければマクロは書けない」のまとめ ・ExcelマクロVBA入門の対応ページ
第16回.エクセルの機能を上手に使う
・エクセルの機能を使った例 ・普通にマクロVBAを書くと ・C2セルに計算式を入れ、フィルハンドルをダブルクリックでオートフィル ・C2セルに計算式を入れ、C2セルをコピー、C3~C11を選択し貼り付け ・C2~C11を選択し、計算式を入力しCtrl+Enterで一括入力 ・マクロの記録を参考にVBAを書いてみると、 ・どのエクセル機能を使うかを考える ・並べ替え ・オートフィルター ・エクセルの機能を上手に使う ・ExcelマクロVBA入門の対応ページ


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

ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.ひらがな⇔カタカナの変換|エクセル基本操作
5.繰り返し処理(For Next)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.Findメソッド(Find,FindNext,FindPrevious)|VBA入門




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


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


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