Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

エクセル2003で特殊文字の置換方法

エクセル2003、XPを使用しています。 エクセルのマクロで置換をしているのですが、 置換対象がCHAR(160)です。 セル上に上のを打ち込むと、実際は違いますが半角スペースに見えます。 特殊文字であっているのでしょうか。 それで、この文字を消したいと思い、以下の通りマクロで記述しているのですが、成功しません おわかりになる方いらしたらよろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.5

=CHAR(160) を「形式を選択して貼り付け」の「値」で貼り付けた文字は 文字コードで Unicode:0x00A0 となりました。 ActiveCell.Value = Chr(160) で貼り付けた文字は 文字コードで Unicode:0xF8F0 となりました。 CHAR(160)とChr(160)は別物だと思います。 n_na_ttoさんが言われるように ChrW(&HA0) を使えば良いと思います。 Cells.Replace What:=ChrW(&HA0), Replacement:="", _   LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _   SearchFormat:=False, ReplaceFormat:=False

cuctus_200
質問者

お礼

へんしんありがとうございます。 全く別のものとして、認識されるのですね。 ちょっとびっくりです。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

確かにcuctus_200さんのやり方だと置換できませんね。 私が置換に成功したときは、以下のマクロでCHAR(160)を埋め込みました。 これで埋め込んだCHAR(160)は置換できるはずです。 Sub test() Range("A3") = Chr(160) End Sub 同じCHAR(160)のはずなんですがねぇ

cuctus_200
質問者

お礼

返信、ありがとうございます なるほど、そういったやり方もありますね。 それにしても、CHAR(160)不思議です。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 確認しました。確かに、出来ないようですね。 ただ、なぜ、Chr(160)自体が、ワークシートに入り込むのでしょうか? 元がテキストにしてある限りは、そのようなコードは入らないのではないかと思います。もしかしたら、データベースの区切り文字かな? 通常の方法では難しいようです。VBAからですと、このような方法が出来るのではないかと思います。 Sub Test2()   Dim c As Variant   Dim i As Long   Dim n As String   Dim m As String   Dim a() As Byte   For Each c In ActiveSheet.UsedRange     If VarType(c.Value) = vbString Then       For i = 1 To Len(c.Value)         n = Mid(c.Value, i, 1)         a() = n         If Not (a(0) = 160 And a(1) = 0) Then           m = m & n         End If       Next i       c.Value = m       m = ""     End If   Next c End Sub

cuctus_200
質問者

お礼

コードまで書いていただきありがとうございます。 Chr(160)はお察しの通り、区切り文字だと思います。 WEBベースのシステムがあり、それをコピペしたときにありました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • n_na_tto
  • ベストアンサー率70% (75/107)
回答No.2

Chr(160) ↓ ChrW(160) とかChrW(&HA0)で試してみてください。

cuctus_200
質問者

お礼

出来ました。 ありがとうございます。 chrWという物があったのですね。 知りませんでした ありがとうございました

すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

同じXP+Excel2003の環境で試してみましたが正常に動きました。 コードとしては問題ないと思われます。 どんな状態になるのでしょうか?

cuctus_200
質問者

補足

早速の返信ありがとうございます。 例えば、A1に"=CHAR(160)"と打って それを、A2に値のみをコピーします。 マクロを実行した場合、きちんと表示してくれません。 わかりやすくするために置換後の言葉を"*"にすると通常であれば、A2に*と表示されるはずですが、"=CHAR(160)"をコピーした物が残っていて表示されません。 つまり、まったくChr(160)というのを認識していないような状態です。 よろしくお願いします。 Cells.Replace What:=Chr(160), Replacement:="*", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

すると、全ての回答が全文表示されます。

関連するQ&A