GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−VBAでいろんなテクニック
  数値操作関数・評価関数・その他の関数について
 
■ 数値操作関数・評価関数・その他の関数について

ここでは、文字列操作12や、日付操作関数などで解説しなかった、VBAの重要な関数について解説します。これらの関数をマスターすれば、VBAにおける開発で必要な関数については、ほぼ網羅したことになります。あとは、必要に応じて特殊な関数をその都度マスターしていけば、ほとんどの開発シーンで困ることはなくなるでしょう。

数値操作関数

数値を切り捨てたり、四捨五入するなど、主に数値の編集に使われる関数です。

■Int関数 Fix関数

Int関数、Fix関数、ともに数値の整数部分を返します。引数の小数部分を切り捨てる動作は同じですが、負の数に対する動作が異なります。

[書式]
Int(数値)
Fix(数値)

[使用例]
Sub Test()
  Debug.Print Int(1.5)
  Debug.Print Fix(1.5)
  Debug.Print Int(-1.5)
  Debug.Print Fix(-1.5)
End Sub
 
コードを実行すると、「1」「1」「-2」「-1」とイミディエイトウィンドウに出力されます。引数が「-1.5」のとき、Int関数とFix関数で処理が異なります。これは、引数が負の数の場合、Int関数は絶対値が大きくなる方に、Fix関数は絶対値が小さくなる方に丸められるためです。

■Round関数

Round関数は、小数部分を四捨五入した結果を返します。通常の四捨五入とは、丸める動作が異なるので(銀行型の丸め)注意が必要です。

[書式]
Round(数値,丸める小数点の位置)

[使用例]
Sub Test()
  Debug.Print Round(0.015, 2)
  Debug.Print Round(0.025, 2)
  Debug.Print Round(0.035, 2)
  Debug.Print Round(0.045, 2)
End Sub

コードを実行すると、「0.02」「0.02」「0.04」「0.04」とイミディエイトウィンドウに出力されます。丸めの対象となる数値が「5」の場合、四捨五入ではなく最も近い偶数に丸められます。それ以外の動作は、四捨五入と同じです。

■Rnd関数 Randomize関数
Rnd関数は、0以上1未満の範囲の乱数を返します。Randomize関数は乱数の初期値を変更します。

[書式]
Rnd(数値)
Randomize(数値)

※ Rnd関数、Randomize関数の引数は、特に指定する必要はありません。

[使用例]
Sub Test()
  Dim i As Long
  Randomize
  For i = 1 To 5
    Debug.Print Int((Rnd * 10) + 1)
  Next i
End Sub 

コードを実行すると、「1〜10」の範囲の整数が5回ランダムにイミディエイトウィンドウに出力されます。

評価関数

条件分岐の条件式で、データの型を調べるときに主に使われます。

■IsNull関数 IsNumeric関数 IsDate関数
IsNull関数は、元となるデータがNull値かどうかを調べます。
IsNumeric関数は、元となるデータが数値かどうかを調べます。
IsDate関数は、元となるデータが日付かどうかを調べます。

[書式]
IsNull(元の値)
IsNumeric(元の値)
IsDate(元の値)

[使用例]
Sub Test()
  Dim MyVal As Variant
  MyVal = ""
  Debug.Print IsNull(MyVal)
  MyVal = "@@@@@"
  Debug.Print IsNumeric(MyVal)
  MyVal = #1/1/2009#
  Debug.Print IsDate(MyVal)
End Sub

コードを実行すると、「False」「False」「True」とイミディエイトウィンドウに出力されます。変数MyValueに「""(空の文字列)」を格納したため、「IsNull(MyValue)」は「False」を返します。次に"@@@@@"の文字列を格納したため、「IsNumeric(MyValue)」は「False」を返します。次に#1/1/2009#の日付を格納したため、「IsDate(MyValue)」は「True」を返しました。

その他の関数
覚えておくと便利な関数です。頻繁に使用されます。

■MsgBox関数
引数に指定した文字列を画面に表示します。アイコンを表示したり、ユーザーが選択したボタンの値を取得することもできます。

[書式]
MsgBox(メッセージ,ボタン,タイトル)

MsgBox関数の引数
引数 定数 説明
メッセージ   メッセージとして表示される文字列
ボタン(省略可) vbOKOnly(既定) [OK]ボタンを表示
  vbOKCancel [OK][キャンセル]のボタンを表示
  vbAbortRetryIgnore [中止][再試行][無視]のボタンを表示
  vbYesNoCancel [はい][いいえ][キャンセル]のボタンを表示
  vbYesNo [はい][いいえ]のボタンを表示
  vbRetryCancel [再試行][キャンセル]のボタンを表示
タイトル(省略可)   タイトルとして表示する文字列

※ 表示するアイコンを指定することができます。その場合、定数どうしを+演算子で加算します。

アイコンに関する定数
定数 アイコン
vbCritical 警告メッセージアイコン
vbQuestion 問い合わせメッセージアイコン
vbExclamation 注意メッセージアイコン
vbInformation 情報メッセージアイコン

※ MsgBox関数は、ユーザーがクリックしたボタンの結果を返します。また結果を利用するときは、引数全体をカッコで囲みますが、結果を利用しないときはカッコで囲みません。

MsgBox関数が返す定数
押されたボタン 返す定数
[OK]ボタン vbOK
[キャンセル]ボタン vbCancel
[中止]ボタン vbAbort
[再試行]ボタン vbRetry
[無視]ボタン vbIgnore
[はい]ボタン vbYes
[いいえ]ボタン vbNo

[使用例]
Sub Test()
  Select Case MsgBox("選択してください", vbAbortRetryIgnore + vbCritical)
  Case vbAbort
    MsgBox "「中止」が選択されました", vbCritical
  Case vbRetry
    MsgBox "「再試行」が選択されました", vbExclamation
  Case vbIgnore
    MsgBox "「無視」が選択されました", vbInformation
  End Select
End Sub

コードを実行すると、[中止][再試行][無視]のボタンを持つメッセージが表示されます。
いずれかのボタンを押すと、押されたボタンの種類をメッセージで表示します。

■InputBox関数
InputBox関数は、ユーザーからの入力を受け付けるダイアログボックスを表示します。

[書式]
InputBox(メッセージ,タイトル,初期値,左端座標,上端座標)

InputBox関数の引数
引数 説明
メッセージ メッセージとして表示される文字列
タイトル(省略可) タイトルとして表示される文字列
初期値(省略可) 入力欄の初期値の文字列
左端座標(省略可) 左端座標。省略すると画面中央に配置
上端座標(省略可) 上端座標。省略すると画面中央に配置

[使用例]
Sub Test()
  Dim MyString As String
  MyString = InputBox("IDを入力してください", "IDの入力", "Guest")
  If MyString = "" Then
    MsgBox "IDが入力されませんでした"
  ElseIf MyString = "Guest" Then
    MsgBox "Guestでログインしています"
  Else
    MsgBox MyString & "さん、ようこそ"
  End If
End Sub

コードを実行すると、ダイアログボックスが表示されます。キャンセルすると、空の文字列が返るため、変数MyStringに「""(空の文字列)」が格納されます。何も入力せずOKボタンをクリックすると、初期値の「Guest」IDが格納されます。IDを入力して、OKボタンをクリックすると、入力されたIDがMyStringに格納されます。

※ InputBox関数が返す値は、あくまでString型の文字列です。数値を入力させるときは、CLng関数などで明示的に型変換を行ってください。

■LBound関数 UBound関数
LBound関数は、配列のインデックス番号の下限を返します。
UBound関数は、配列のインデックス番号の上限を返します。

[書式]
LBound(配列,次元)
UBound(配列,次元)

引数「次元」は省略できます。省略すると1番目の次元が対象になります。

[使用例]
Sub Test()
  Dim MyArray(5 To 10) As String
  Debug.Print LBound(MyArray)
  Debug.Print UBound(MyArray)
End Sub

コードを実行すると、「5」「10」とイミディエイトウィンドウに出力されます。Toキーワードを使用して、配列変数MyArrayのインデックス番号の開始値を「5」に、終了値を「10」に設定しています。そのため、LBound(MyArray)、UBound(MyArray)の返す値は「5」「10」になります。

■Array関数

指定された要素からバリアント型の配列を作ります。

[書式]
Array(要素1,要素2,要素3,…)

[使用例]
Sub Test()
  Dim MyVal As Variant
  Dim i As Long
  MyVal = Array("AAA", "BBB", "CCC")
  For i = 0 To UBound(MyVal)
    Debug.Print i + 1 & "番目の要素は" & MyVal(i)
  Next i
End Sub

コードを実行すると、「1番目の要素はAAA」「2番目の要素はBBB」「3番目の要素はCCC」とイミディエイトウィンドウに出力されます。またこの場合、対象となるバリアント型変数は配列として宣言しないので注意してください。


以上、数値操作関数、評価関数、その他の関数を紹介しました。
これらの関数は、頻繁に使用されるとても重要な関数です。ぜひ、これらの関数をマスターし、プログラムの中で自由に使いこなしてください。

あなたのプログラミングテクニックは、見違えるように上達することでしょう。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,