守破離でいこう! -Let's go with SyuHaRi!-

2007/11/30

VBAのReplace

VBAには、指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返す、Replace 関数があります。

先日、ユーザから入力された文字を、日本語:全角、英数字:半角に整形するモジュールで、「う」が「ウ」に変換されてしまう不具合が見つかりました。
このモジュールではReplace関数を使い、以下のように置換している箇所がありました。

formatString = Replace(strResult, "ウ", "ウ")

指定しているのは半角の「ウ」なのですが、なぜか「う」も置換されてしまいます。

ですので、以下のように、文字列式を評価するときに使用する文字列比較のモードをバイナリ モードで比較するようにして対処しました。

formatString = Replace(strResult, "ウ", "ウ", Compare:=vbBinaryCompare)

ラベル:

naoki 19:52 | 0 comments |
HaloScan: |

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 の違いをご覧下さい。

ラベル:

naoki 15:25 | 0 comments |
HaloScan: |