前半はVBA関数の話し、後半はモジュールのコードでワークシート関数を使う方法(WorksheetFunction)。
四捨五入はVBA.Round(数値)を、切り捨てはVBA.Int(数値)を使う。以下はイミディエイトウィンドウに入力する。?から始める文字列の行が入力する。他は出力行。
?vba.Int(1.3343) 'Intは符号なし数値、整数を返す
1 '結果
?int(-1.1)
-2 '切り捨てといってもマイナスの場合は注意
?vba.Round(2.1) '小数点第一位(小数点の位置から見て右方向に1個目)を四捨五入する
2
?vba.Round(2.6)
3
?vba.Round(1.66,1) '第二引数に小数点以下の表示桁数を指定できる。第二引数+1の桁を四捨五入する
1.7
?vba.Round(16.6/10)*10 'vba.Round関数は第二引数にマイナスが使えない
20
セルで表示する場合は、セルの表示形式で小数点の位置が決まる。セルの表示形式でも四捨五入はできるが表示が変わるだけでデータは変わらない。
一方、セルの中で使うワークシート関数のRoundは、第二引数にマイナスも使える。VBAからワークシート関数を使う場合は、WorksheetFunctionで「.」ドットを使う。同じRound関数ですが、VBAのコードで単にRoundとするとVBAのライブラリのRound。ワークシート関数関数のRound関数を使う場合はWorksheetFunctionがいる。
?excel.WorksheetFunction.Round(16.6,-1) 'ワークシート関数のRoundはマイナスが使える
20
セル内で使うワークシート関数には、切り捨て、切り上げてもある。 ?から始める文字列の行が入力する。他は出力行。
?excel.WorksheetFunction.RoundDown(2222,-3)
2000
?excel.WorksheetFunction.RoundUp(2222,-3)
3000