• ベストアンサー

=code(" ") で値が160となる文字をEXCEL VBAで消したい

EXCEL2002です。 あるセルに半角スペースを入力し、マクロで Cells.Replace Chr(&H20), "" と走らせるときれいに消えてくれます。ちなみにこの半角スペースを=code(" ")で調べると値は32となります。 同じやり方で=code(" ")で調べると160の値となる文字があります。これはスペースのようですが、半角でも全角のスペースでもないようです。 この文字をVBAの上記の方法で消したい場合にCells.Replace Chr(xxxx), "" ←xxxxの部分は何といれたらよいのでしょうか?

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

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

Chr()ではなくChrB()で試してみて下さい。

min128mini
質問者

お礼

FlossenEngelさん、出来ましたっ! 本当に助かりました。ありがとうございます。

その他の回答 (1)

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

こんばんは &Hxx とは16進数での表記です。 ですので、 &H20は16進数で20ですので、10進数で32ですよね。 これをふまえると、 10進数で160であれば、16進数でA0です。 という事は &HA0 を入れれば良いという事です。

min128mini
質問者

補足

秒速の回答ありがとうございます。 早速試させていただいたのですが、うーん、&HA0だと消えてくれないようです・・・・

関連するQ&A

  • VBAで文字コードを取り出したい

    セルに取り込んだ文字列にスペースが含まれ、VBAの" "で読まれません。関数で=CODE(B1)により取り込むと文字コード160です。 VBAで文字コード160で識別したいのですが、chr()などを試してエラーになります。 セル内の文字からmidで取り出したスペース(コード160)を、コード番号で識別してifを使って排除したいのですが、素人ですので、マクロがうまく作れません。 混乱していますが、よろしくお願いします。

  • VBAで正規表現

    Excel2000-VBAにてマクロ作成中です。 以下のような処理を正規表現を使用して一発で実行させたいのですが、 正規表現に指定するパターンがわかりません・・・。 どなたがご存知でしたら教えて下さい。 やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、 さらに連続している半角スペースを1つに置換したい。 スペースを半角に統一することは、Replace関数で可能かと思っています。

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

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

  • エクセル:文字列のバイト数が欲しい

    セルB1に、  半角スペース、全角2文字、半角スペース、 と入力しました。 このシートの別のセルに、 =Len(B1)と入力すると4と表示され、 =LenB(B1)と入力すると6と表示されますので、 間違いなく「半角スペース・全角2文字・半角スペース」がB1に入っているはずです。 このシートのコードに、 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address = "$L$1" Then     MsgBox LenB(Cells(1, 2).Value)   End If End Sub と打ちました。 ここでシート上のセルL1に何か入力するとメッセージボックスが出るのですが、 メッセージボックスに出る値は8です。 何が原因でしょうか。 6が表示されて欲しいのですが(文字列のバイト数が欲しい)、 どのようにコードを書けばよいでしょうか。 実際にB1に入れていた文字は、 1B です。 (半角スペース・全角数字1・全角英字B・半角スペース)

  • スペースが認識されません(エクセルVBA)

    空白文字に囲まれた文字を抜き出すマクロを製作したいのですが うまくいかず困っています。お助けください。 例えば、以下のような文字がA1セルに入力されているような場合に使用しています。 ”ab c d” f1 = Cells(i, "A") Cells(i, "A") = Mid(f1, InStr(f1, " ") + 1, InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " ")) このマクロを動作させると、一つ目のスペースは認識されるのですが 二つ目のスペースは認識される場合とされない場合があります。 原因を調査するために以下のようなコードを上記マクロの下に追記したところ MsgBox Mid(f1, InStr(f1, " ") + 1) & " " & InStr(InStr(f1, " ") + 1, Mid(f1, InStr(f1, " ") + 1), " ") 表示は cd 0 のようになります。二つ目のスペースが認識されていないようです。 また、エクセルに数式を入力すれば、上記の式でも認識しておりますが 他の操作との関係もあって、できればVBAで処理したいのです。 データはテキストデータから取り込んでおります。 実際にはセルには漢字や仮名、数字などのデータが混在しております。 エラー回避のために試した方法としては以下の2つです。 1.文字列として変換する方法 Cells(1, "A")=Format(f1, "@") 2.スペースの全角半角をそろえる方法 (下記の文では全角を半角にしておりますが、その逆も試しました) If Cells(1 ,"A") = Cells(1 "A") Like "* *" Then Cells(1, "A") = Replace(Cells(1, "A"), " ", " ") End If どちらを行っても改善はみられませんでした。 どこに間違いがあるのか、思い当たらず苦戦しています。 よろしくお願いいたします。 (エクセル2003、VISTA)

  • エクセルVBAで実行する対象を選択文字列にするには?

    エクセルVBAで文字列を半角や全角にするマクロをつくっています。 私は、”あるセルに対して”はできるんですが、 その対象文字列を、”カーソルで選択して反転したところに対して”実行できるようにしたのです。できるんでしょうか。 よろしくおねがいします。

  • VBAで( )のものだけ(   )に変更したい

    お世話になります。 現在エクセルの複数のセルに( )空白のスペースが入った()があります。 ※()の中は半角・全角のスペースが中身が半角・全角のスペースの数がさまざまな形で入っています。 ()の中に入っているのは半角・全角のスペースがはいている()のみ( )※全角スペース3個 のものに変換したいのです。 しかしながら、他のセルに(2222)などの()の間に数字や文字が入っているものがあり、それに対しては、そのままにしたいのです。 エクセルのVBAで実現したいのですが、どのようにすればよいでしょうか? 何卒よろしくお願いします。

  • Excelで22バイトの文字を数えたい

    Excel2002です。 VBAでセルの文字列を取得する時に全角制御文字(2バイト)を含めて22バイトの制限を考慮したいのですがその方法がわかりません。 全角文字だけなら10文字、  半角文字だけなら22文字の取得ができます。 その後の作業の都合上、22バイトを基準に条件判断したいのですが現在はその方法がわからないためLEN()で10を上限としています。LENB()でも同じ結果(文字数が返される)になります。 対象のセルには全角文字/半角文字が混在しており、全角-半角-全角-半角のような混在であれば制御文字を2回考慮する必要があります。 最悪その文字が全角か半角かの区別がつけば対応できると思います。 よい方法をご教授いただきたくお願いいたします。

  • 【Excel VBA】A列の全角・半角文字をチェック

    【Excel VBA】A列の全角・半角文字をチェック Excel VBAの初心者です。 仕事で必要なため、教えていただけると助かります。 【やりたいこと】 Excel VBAで、入力が完了したExcelシートのA列(A1からA10)が、 半角のみであること、または全角が入力されていないこと、を チェックしたいです。 半角以外の文字があった場合は、メッセージを表示します。 また、半角以外のセルがあった場合は、そのセルの色を水色にします。 入力チェックの方法は、ボタンにマクロを登録して、 そのボタンを押下することで行います。 以下に、僕が試したプログラムを記します。 アドバイスをいただけると幸いです。よろしくお願いします。 Sub 入力チェック() Dim cellValue As String Dim strANSI As String Dim i As Integer For i = 0 To 10 cellValue = Cells(1, i + 1) strANSI = StrConv(cellValue, vbFromUnicode) If Len(cellValue) = LenB(strANSI) Then MsgBox "セルは半角のみ" myColor = 8 Else MsgBox "セルの内容は全角のみ" End If MsgBox "セルの内容は全角と半角があり" Next i End Sub

  • htmlから取り込んだ を消したい EXCEL VBA

    WIN XP HOME,EXCEL2002を使用しています。 あるWEBサイトから取り込んだデータに「やまだ たろう」とあります。この「やまだ」と「たろう」の間に、 (実際にはスペースのように見えます)というデータが入っており、最終的にEXCEL VBAでCSVファイルに変換すると「やまだ?たろう」となってしまいます。 この「?」を無くして「やまだたろう」(間にスペースは不要)としたいのですが、どのようにすればいいのでしょうか? ちなみに↓の"a"のところに半角スペースや、全角スペースなどを入れてみましたが、NGでした。 Cells.Replace What:="a", Replacement:="", どなたかよろしくお願いいたします。

専門家に質問してみよう