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

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

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


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


全てのVBA関数一覧は、VBA関数一覧
VBA関数の一覧と解説ですどんな関数があるかは一度は確認しておくとをお勧めいたします。どんな関数があるだけでも知っておけば詳細の使い方は実際に使うときに調べても良いでしょう。文字列操作…34 型変換…12 データ判定…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 ・・・新着記事一覧を見る

Byte配列と文字コード関数について|VBA技術解説(8月20日)
PowerQueryの強力な機能をVBAから利用する方法|VBA技術解説(8月4日)
練習問題31(セル結合を解除して値を埋める)|VBA練習問題(7月30日)
練習問題30(マトリックス→リスト形式)|VBA練習問題(7月25日)
Applicationを省略できるApplicationのメソッド・プロパティ一覧|VBA技術解説(7月22日)
コレクション(Collection)の並べ替え(Sort)に対応するクラス|VBA技術解説(7月20日)
CSVの読み込み方法(ジャグ配列)|VBAサンプル集(7月15日)
その他のExcel機能(グループ化、重複の削除、オートフィル等)|VBA入門(7月14日)
オートフィルタ退避回復クラスを複数シート対応させるVBAクラス|VBA技術解説(7月6日)
オートフィルタを退避回復するVBAクラス|VBA技術解説(7月6日)


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

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.セルに文字を入れるとは(Range,Value)|VBA入門
9.ひらがな⇔カタカナの変換|エクセル基本操作
10.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説



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

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


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




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