• ベストアンサー

Excel VBA で 選択セルの一部を置換

こんにちは。お願いします。 選択セルの文字列の右端が"号"、"番地"、"番"だったときに、それを消す、というマクロを作ろうとして、以下のようになりました。 Sub adrconv() Dim c For Each c In Selection If Right(c.Value, 1) = "号" Or Right(c.Value, 2) = "番地" Or Right(c.Value, 1) = "番" Then c.Replace what:="号", replacement:="", lookat:=xlPart c.Replace what:="番地", replacement:="", lookat:=xlPart c.Replace what:="番", replacement:="", lookat:=xlPart End If Next c End Sub お気づきかもしれませんが、これでは右端の"番"だけでなくどの"番"も消えてしまうのです。 右端の文字のみ消す方法をご教示願います。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

方法はいくつかありますが、単純な方法をひとつふたつ。 '----------------------------------------------  Sub Test222()  Dim c As Range  For Each c In Selection   If c.Value Like "*号" Then c.Value = Left(c.Value, Len(c.Value) - 1)   If c.Value Like "*番" Then c.Value = Left(c.Value, Len(c.Value) - 1)   If c.Value Like "*番地" Then c.Value = Left(c.Value, Len(c.Value) - 2) Next c End Sub '---------------------------------------------- Sub Test333()  Dim c As Range  For Each c In Selection   If Right(c.Value, 1) = "号" Then c.Value = Left(c.Value, Len(c.Value) - 1)   If Right(c.Value, 1) = "番" Then c.Value = Left(c.Value, Len(c.Value) - 1)   If Right(c.Value, 2) = "番地" Then c.Value = Left(c.Value, Len(c.Value) - 2) Next c End Sub '------------------------------------------------ 以上です。

noname#200395
質問者

お礼

参考になりました。ありがとうございます!

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

こんな感じでは If Right(c.Value, 1) = "号" Or Right(c.Value, 1) = "番" Then   c.Value = Left(c.Value, Len(c.Value) - 1) ElseIf Right(c.Value, 2) = "番地" Then   c.Value = Left(c.Value, Len(c.Value) - 2)

noname#200395
質問者

お礼

そうですね!ありがとうございます。

  • S-Fuji
  • ベストアンサー率36% (592/1624)
回答No.2

c.Valueの文字列長を調べておき Left側から、文字列長-1文字、或いは2文字を引いた長さだけ切り出す。

noname#200395
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう