プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
ExcelVBA、文字列の置換
ド忘れしたのでメモっておきます。
ちなみにExcel2010ね。

ExcelVBAでの文字列の置換は

Replace(置換元の文字列, 置換対象の文字列, 置換後の文字列)

でOK。

サンプルはこちらφ(--)

Dim text As String

text = "AfromA"
text = Replace(text, "from", "to")

'結果は「AtoA」
MsgBox text

第4引数で検索開始位置を指定できるそうです。

Replace(置換元の文字列, 置換対象の文字列, 置換後の文字列, 検索開始位置)

とすればOK……らしいのですが、これ、検索開始位置じゃなくね(--?
正確には「指定位置より左が捨てられる」だと思います。

こんなコードを書くとφ(--)

Dim text As String

text = "1234567890"
text = Replace(text, "from", "to", 3)

MsgBox text

こんな結果になりますよφ(--)

34567890

左2文字が切り捨てられちゃいました。
Excel2010特有の動きなんでしょうか(--?
どの説明見ても「検索開始位置」って書いてあるけどなんか腑に落ちません。

まぁ良いや(--ゞ
気を取り直して、第5引数で置換回数を指定できるらしい。

Replace(置換元の文字列, 置換対象の文字列, 置換後の文字列, 検索開始位置, 置換回数)

ですね。
未指定時は全置換、指定時は見つかった順に指定回数置換してくれるようです。

サンプルはこちらφ(--)

Dim text As String

text = "AfromAfromAfromA"
text = Replace(text, "from", "to", 1, 2)

'結果は「AtoAtoAfromA」
MsgBox text

最後にReplace関数には第6引数もあるそうです。
文字式を比較するときの種別(テキストとかバイナリとか)を指定できるのだそうな。
書き方は

Replace(置換元の文字列, 置換対象の文字列, 置換後の文字列, 検索開始位置, 置換回数, 比較種別)

ですね。

比較種別に指定可能な値は

vbUseCompareOption:-1:Option Compareステートメントの設定値を使用
vbBinaryCompare:0:テキストで比較
vbTextCompare:1:バイナリで比較

です。
まぁ、ぶっちゃけ普通に使う分には気にしなくて良いですけどね。

単純な関数の割には思ったより書くことがありました。
取りあえず、そんな感じ(--)ノ
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:ExcelVBA  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事