ExcelマクロVBA入門
第48回.VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)

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

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


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


全てのVBA関数一覧は、VBA関数一覧
VBA関数の一覧と解説ですどんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 型変換…14 データ判定…11 日付時刻…20 配列…7 ファイル操作…14 数学/財務…28 その他…19 MicrosoftDocsOfficeVBARefer…
以下の一覧のリンクは、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 には範囲の下限の値を指定します。

Round関数

ワークシートのROUND関数は、四捨五入ですが、
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 ・・・ 偽(False)
となりますので、使い分けして下さい。

空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)
空白セルの判定は、VBAにおいては頻繁に発生しますが、正しく空白セルを判定する事は以外と難しいものです。そもそも「空白」とはどのような状態なのか… これが、はっきりしない為に何が正しいのかが判然としないことが問題を複雑にしています。以下、A1セルが空白かどうか判定する方法をいくつか紹介します。

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

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

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

型変換関数の注意点
引数のデータが、データ型変換出来ない場合はエラーが発生します。
事前に対応する、データ型確認のIs○○関数で確認するか、
エラー処理ルーチンを有効にする必要があります。
(これについては、マクロVBA入門の後々の章で説明します)
マクロ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
第51回.Withステートメント
第52回.オブジェクト変数とSetステートメント
第53回.Workbookオブジェクト
第54回.Windowsオブジェクト
第55回.Worksheetオブジェクト


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

VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行番号を取得できるErl関数|VBA技術解説(10月12日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)
VBEの使い方:ウォッチ ウィンドウ|VBA入門(10月4日)
VBEの使い方:ローカル ウィンドウ|VBA入門(10月3日)
VBEの使い方:イミディエイト ウィンドウ|VBA入門(10月2日)


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

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



  • >
  • >
  • >
  • VBA関数(その他,Fix,Int,Rnd,Round,IsEmpty)

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


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




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