2007/11/30
VBAのReplace
VBAには、指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返す、Replace 関数があります。
先日、ユーザから入力された文字を、日本語:全角、英数字:半角に整形するモジュールで、「う」が「ウ」に変換されてしまう不具合が見つかりました。
このモジュールではReplace関数を使い、以下のように置換している箇所がありました。
formatString = Replace(strResult, "ウ", "ウ")
指定しているのは半角の「ウ」なのですが、なぜか「う」も置換されてしまいます。
ですので、以下のように、文字列式を評価するときに使用する文字列比較のモードをバイナリ モードで比較するようにして対処しました。
formatString = Replace(strResult, "ウ", "ウ", Compare:=vbBinaryCompare)ラベル: vba
2007/02/06
ExcelVBAでRoundUp、RoundDown
Excelでは、切り捨て、切り上げ、そして四捨五入といったことを、それぞれ、=ROUNDUP()、=ROUNDDOWN()、=ROUND()といった関数を利用して簡単にできます。
これらの関数は非常に便利で、よく利用します。
しかし、VBAでRoundUp(切り上げ)や、RoundDown(切り捨て)をする場合、VBAの標準関数にはこれらの関数はありません。
ですので、Excelのワークシート関数をVBAから呼び出して利用すると良いです。
Application.WorksheetFunction.RoundUp(y, -1)
注:ROUND(四捨五入)関数については、ワークシート関数とVBAとで、動作が異なるようです。
詳しくは、[XL2000]VBA の Round とワークシート関数 Round の違いをご覧下さい。
ラベル: vba
