VBA入門
VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2021-09-10

第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)


VBA関数の中で、日付関数、文字列操作関数以外でマクロVBAにおいてはぜひ覚えておいてほしい関数の一覧です。
数学、データ型確認、データ型変換に関するVBA関数になります。
一覧と、その中から注意点のある関数についてのみ一部説明します。


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


数学VBA関数の一覧



関数 説明
Fix 指定した数値の整数部分を返します。負の場合、その数値以下の最大の値を返します。
Int 指定した数値の整数部分を返します。負の場合、その数値以上の最小の値を返します。
Rnd 単精度浮動小数点数型 (Single) の乱数を返します。
Round 指定された小数点位置で丸めた数値を返します。

詳細については、一覧のリンクより解説ページをご覧ください。

Fix関数、Int関数

正数値の場合は、同じ結果となりますが、負数値の場合に違いが発生します。

Int(-99.2) → -100
Fix(-99.2) → -99


Rnd関数

システム タイマーから取得した新しいシード値を使って、乱数ジェネレータを初期化するには、
Rnd 関数を呼び出す前に、引数を指定せずに Randomizeステートメントを実行してください。

任意の範囲の整数の乱数を生成するには、次の式を使ってください。

Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

この式では、変数 upperbound には範囲の上限の値を指定し、
変数lowerbound には範囲の下限の値を指定します。

Randomizeステートメントについて
Randomizeステートメントは、乱数ジェネレーターを初期化します。
Randomize [ number ]
numberを使用して、Rnd関数の乱数ジェネレーターを初期化します。
numberを省略すると、システムタイマーから返される値が新しいシード値として使用されます。
Randomizeを使用しないと、Rnd関数 (引数なし) は、最初に呼び出されたときと同じ数値をシードとして使用して、その後は最後に生成された数値をシード値として使用します。

Round関数

ワークシートのROUND関数は、四捨五入ですが、
VBAのRound関数は丸め(銀行型丸め、最近接偶数丸め)になります。
エクセルの関数で、ROUNDは四捨五入です。しかし、VBAでのRoundは、銀行型丸め(最近接偶数への丸め)で、Accessも銀行型丸めとなっています。四捨五入では、どうしても大きくなる傾向があるようです。

ワークシート
ROUND関数
VBA
Round関数
1.4 1 1
1.5 2 2
1.6 2 2
2.4 2 2
2.5 3 2
2.6 3 3


データ型確認のVBA関数一覧



関数 説明
IsArray 変数が配列であるかどうかを調べ、結果をブール型 (Boolean) で返します。
IsDate 式を日付に変換できるかどうかを調べ、結果をブール型 (Boolean) で返します。
IsEmpty 変数が Empty 値かどうかを調べ、結果をブール型 (Boolean) で返します。
IsError 式がエラー値かどうかを調べ、結果をブール型 (Boolean) で返します。
IsMissing プロシージャに省略可能なバリアント型 (Variant) の引数が渡されたかどうかを調べ、結果をブール型 (Boolean) で返します。
IsNull 式に Null 値が含まれているかどうかを調べ、結果をブール型 (Boolean) で返します。
IsNumeric 式が数値として評価できるかどうかを調べ、結果をブール型 (Boolean) で返します。
IsObject 識別子がオブジェクト変数を表しているかどうかを示すブール型 (Boolean) の値を返します。

詳細については、一覧のリンクより解説ページをご覧ください。

IsEmpty関数

A1セル:"=B1 & C1"
B1セル:""
C1セル:""
この場合、
If Range("A1") = "" ・・・ 真(True)
If IsEmpty("A1") ・・・ 偽(False)
となりますので、使い分けして下さい。

空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)
・セルの値が空白の判定 ・計算式が入っていない判定 ・エラー値の判定 ・IsEmpty関数:空白を判定するVBA関数 ・TypeName関数:データ型を判定するVBA関数 ・RangeオブジェクトのFormulaプロパティ ・空白セルを正しく判定する方法続編


データ型変換のVBA関数一覧

関数 説明
CBool ブール型 (Boolean)のデータ型に変換します。
CByte バイト型 (Byte)のデータ型に変換します。
CCur 通貨型 (Currency)のデータ型に変換します
CDate 日付型 (Date)のデータ型に変換します。任意の有効な日付
CDbl 倍精度浮動小数点数型 (Double)のデータ型に変換します。
CDec 10進型 (Decimal)のデータ型に変換します
CInt 整数型 (Integer)のデータ型に変換します。
CLng 長整数型 (Long)のデータ型に変換します。
CLngLng LongLong型に変換します。
CLngPtr LongPtr型に変換します。
CSng 単精度浮動小数点数型 (Single)のデータ型に変換します。
CStr 文字列型 (String)のデータ型に変換します。
CVar バリアント型 (Variant)のデータ型に変換します。
CVerr 指定した数値(エラー番号)を、バリアント型のエラー値に変換します。

詳細については、一覧のリンクより解説ページをご覧ください。

型変換関数の注意点

引数のデータが、データ型変換出来ない場合はエラーが発生します。
事前に対応する、データ型確認のIs○○関数で確認するか、
エラー処理ルーチンを有効にする必要があります。
第60回.エラー処理(On Error)
・マクロVBAのエラー発生例 ・エラー処理のステートメント ・実行時エラー関連記事
第61回.「On Error GoTo」と「Exit Sub」
・On Error GoTo 行ラベル ・Exit Sub ・On Error の有効範囲とその動作について ・最後に
第62回.「On Error Resume Next」とErrオブジェクト
・On Error Resume Next ・Errオブジェクト ・On Error Resume Next の使用例 ・「On Error Resume Next」の最後に

マクロVBAでは自動型変換が行われるので、使用頻度はそんなに多くはないかもしれません。
しかし、データ型の不一致によるマクロVBAの不具合も時に発生しますので、使えるようにはしておいてください。




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

第45回.VBA関数(Format)
第46回.VBA関数(日付,DateAdd)
第47回.VBA関数(文字列操作,Replace,InStr,StrConv)
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)
第49回.Like演算子とワイルドカード
第50回.総合練習問題6
第87回.WorksheetFunction(ワークシート関数を使う)
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト


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

TOROW関数(配列を横1行の配列にして返す)|エクセル入門(2022-10-31)
TOCOL関数(配列を縦1列の配列にして返す)|エクセル入門(2022-10-31)
CHOOSECOLS関数(配列から複数の指定された列を返す)|エクセル入門(2022-10-29)
CHOOSEROWS関数(配列から複数の指定された行を返す)|エクセル入門(2022-10-29)
WorksheetFunctionの効率的な使い方とスピル新関数の利用|VBA入門(2022-10-27)
VSTACK関数(配列を縦方向に順に追加・結合)|エクセル入門(2022-10-25)
HSTACK関数(配列を横方向に順に追加・結合)|エクセル入門(2022-10-25)
LAMBDA以降の新関数の問題と解説(配列操作関数編)|エクセル入門(2022-10-24)
LAMBDA以降の新関数の問題と解説(ヘルパー関数編)|エクセル入門(2022-10-24)
LAMBDA以降の新関数の問題集|エクセル入門(2022-10-24)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.エクセルVBAでのシート指定方法|VBA技術解説
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄




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


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



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