• ベストアンサー

エクセルVBAで特定の文字を削除したい

選択しているセルの中に入っている文字「■」を 削除したいのですがうまくいきません。 お願いいたします。 Sub ■削除() Dim myRange As Range Dim keyWord1 As String, keyWord2 As String Dim bool As Boolean Set myRange = ActiveCell keyWord1 = "■" keyWord2 = "" bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole) End Sub

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

  • ベストアンサー
回答No.1

Sub ■削除() 元 = ActiveCell.Value For 検索 = 1 To Len(元) If Mid(元, 検索, 1) <> "■" Then 新 = 新 & Mid(元, 検索, 1) Next ActiveCell.Value = 新 End Sub

value100100
質問者

お礼

早々にありがとうございます。 解決することができました。 これで作業がしやすくなります。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

Replace利用を、あきらめるつもりはないだろうが、 Basic言語以前からある方法で、下記でもやれるよ。 ーー A列にデータあるとする。B列に結果を置く。 aa▢■sdf   aa▢sdf 大きな池■   大きな池 ■遠い場所   遠い場所 1234■うぇrt   1234うぇrt ■遠い場所■   遠い場所 ーーー 標準モジュールに Sub test01() For i = 2 To Range("a1000").End(xlUp).Row s = Cells(i, "A") p1: p = InStr(s, "■") If p = 0 Then Cells(i, "B") = s GoTo p2 Else s = Mid(s, 1, p - 1) & Mid(s, p + 1, Len(s) - p) End If GoTo p1 p2: Next i End Sub 1セルに2個以上出現分も、削除するようにした テストデータ数が少ないので、いろいろのデータでテストする必要があるが。

value100100
質問者

お礼

ありがとうございました。 問題を解決することができました。 感謝いたします。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlWhole) を bool = myRange.Replace(keyWord1, keyWord2, LookAt:=xlPart) に変更して試してみてください。 なお、LookAt:=xlPartは省略可能です。

value100100
質問者

お礼

ありがとうございました。 問題を解決することができました。 感謝いたします。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

Sub ■削除() ActiveCell = Replace(ActiveCell, "■", "") End Sub

value100100
質問者

お礼

ありがとうございました。 問題を解決することができました。 感謝いたします。