• 締切済み

エクセル VBA "-"ハイフンの削除

お世話になります。 セルに含まれる文字列の中から"-"ハイフンを削除しようと思い、 Cells.Replace What:="-", Replacement:="" と記述したのですが、例えば 0-0-0-111 は 111 となってしまい、"0"も消えてしまいます。もちろん、"0-0-0-111 "は文字列です。 また、シート内の全てのセルが文字列にならなければいけないので関数式を入れることはできません。ハイフンの位置もその都度バラバラです。 よろしくお願いいたします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 Sub Test1()   Dim r As Range   Dim c As Variant   On Error Resume Next   Set r = Cells.SpecialCells(xlCellTypeConstants, xlTextValues)   On Error GoTo 0   For Each c In r.Cells     If c.Value Like "#*" And c.PrefixCharacter = "" Then       c.Value = "'" & Replace(c.Value, "-", "", , , vbTextCompare)     End If   Next c End Sub

TENSAW
質問者

お礼

御礼が遅くなり大変申し訳ございません。 エラー処理にまで気を利かせてくださり大変助かりました。 ありがとうございました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

一般機能と同じことですが・・・。 1. 先頭に ' を付ける With ActiveCell .Value = "'" & Replace(.Value, "-", "") End With あるいは、 2. セルの書式を文字列にする With ActiveCell .NumberFormatLocal = "@" .Value = Replace(.Value, "-", "") End With

TENSAW
質問者

お礼

御礼が遅くなり大変申し訳ございません。 先頭に"'"はその後の処理によりわけがありつけることができないのです。 また、2案に関しましてはすでに試してみたのですが。。。だめでした。 どうもありがとうございました。

関連するQ&A

  • シート内のひらがなを全て削除したい

    こんばんは。エクセル2003です。 シート内の全てのひらがなを削除して 英数字、漢字、記号のみを残したいのですが Cells.Replace what:="あ", Replacement:="", LookAt:=xlPart Cells.Replace what:="い", Replacement:="", LookAt:=xlPart Cells.Replace what:="う", Replacement:="", LookAt:=xlPart ・ ・ ・ Cells.Replace what:="ん", Replacement:="", LookAt:=xlPart とやっていくしかないでしょうか? 何か効率のいい方法があれば教えて頂ければ助かります。 よろしくお願いします。

  • Excel2003 VBA 「*」を含む文字列の置換方法は?

    セルに「あいうえお あい*うえお」という文字列がある場合 そのセルに対して Cells.Replace What:="あい*うえお", Replacement:="" の処理を実行するとすべて消えます この場合「あいうえお」だけを残すには どのようにすればいいのでしょうか?

  • Excelの置換で書式が変わる現象の回避策

    下記のようなマクロで複数の置換をしています。 Cells.Replace What:="★", Replacement:="☆", MatchCase:=True Cells.Replace What:="◆", Replacement:="◇", MatchCase:=True Cells.Replace What:="■", Replacement:="□", MatchCase:=True ・ ・ ・ セル内で改行して文字サイズや色を変えている箇所では置換後1行目の書式に変わってしまいます。 文字だけを置換をしたいのですがこれを回避する方法はあるのでしょうか教えてください。

  • エクセルでVBAを使ってブック内にある特定の言葉をすべて置き換えしたい

    VBAの超初心者なのですが、 品番変更に伴い複数枚のシートから成るエクセルファイルの特定の文字を置換えたいのですが・・・。 Range(Cells(1, 1), Cells(65536, 256)).Replace What:="旧品番", Replacement:="新品番" で1枚のシートだけなら置換えできたのですが、すべてのシート(ファイル内すべて)の置換え方がわかりません。 どうしたらよいのでしょう。教えてください。

  • 文字列一番右がハイフンのものだけハイフン削除したい

    Excel2003を使用しています。以下のリストがあるとします。 01-100-10 01-100-1 01-100-11 01-100-11- 01-100-11- 01-100-11- 01-100-11- 01-100-11 01-100-11 01-100-11 01-100-1 01-100-12- 01-100-1- 01-100-13 01-100-13 このような文字列がずらーっと並んでいまして、その中で文字列一番右のハイフンを削除したいのです。一番右がハイフンでないものはそのままです。 ハイフンを削除するのは置換で出来ますが、それだと真ん中のハイフンも消えてしまいます。 Excelの関数はあまり得意でないので、いろいろ考えたのですがよくわかりませんでした。ご存知の方、ご教授願えないでしょうか。よろしくお願いいたします。

  • 置換のVBA

    エクセルのあるシート内の「abc」という文字列を「abc20」に置換するには以下で可能ですが、 Sub chikan() Cells.Replace What:="abc", Replacement:="abc" & "20", _ LookAt:=xlPart,SearchOrder:=xlByRows, MatchCase:=False End Sub 「abc」という文字列を連番で「abc20」「abc21」「abc22」・・・・・というふうに置換するにはどうすればいいでしょうか?

  • Excelで、ハイフンを消したいけど000は残したい

    A列に、 00033-11-55 00432-12-01 00022-11-56 ・・・・・・ と、5桁-2桁-2桁 の数字がずーっと並んでいます。 これを、B列の、各となりのセルに、 000331155 004321201 000221156 ・・・・・・ というふうに、 ハイフンは消すが、000や00は残した数字を表示させたいです。 単に置換で、「-」を「」に置き換えると、00や000が消えてしまいます。。。。。 A列の、セルの書式設定を文字列にしても駄目でした。 どうすればいいでしょうか? 何かうまい関数などは、ありませんでしょうか?

  • Excel VBAで改行マークを削除する方法

    先日QNo.1801087で質問させていただいた件の続きです。 http://okwave.jp/kotaeru.php3?q=1801087 ユーザーフォームのテキストボックスに入力されたデータを複数のセルに入るように教えて頂きました。それは上手く行ったのですが、改行マークが(・)入ってしまって、その後の処理に問題が生じてしまうので、改行を削除するコードを記述しましたが、はじめの「0」が消えてしまって困ってます。  A1 942158621c9c05011020010a03020907・  A2 00054000・ Columns("A:A").Select Selection.Replace what:="" & Chr(13) & "", replacement:="" データは数字とアルファベットがランダムに並んでおり、全て文字列です。 A2のように数字のみの場合もあり、「0」から始まる時もあり、この「0」が一緒に削除されて「54000」となってしまいます。 上手く改行だけを削除し、「00054000」と文字列にするにはどうしたら良いのでしょうか。 Win2000、Office2003です。 よろしくお願いいたします。

  • エクセル(2003) 「1900/1/0」を消したい

    セルA1に0を入力し 書式設定で日付→yyyy/m/dを選択しました。 しかし下記のマクロ実行しても 0が空白になりません。 Sub 日付置換() Cells.Replace what:="1900/1/0", Replacement:="", LookAt:=xlPart Cells.Replace what:="00/01/00", Replacement:="", LookAt:=xlPart Cells.Replace what:="0", Replacement:="", LookAt:=xlWhole End Sub なら最初から0なんか入力しなきゃいいじゃん。 と思われるかもしれませんが これはCSVファイルで出力したもので 最初から0の数値にも書式設定がかかってて「1900/1/0」となっています。 「1900/1/0」のデータをなくしたいのですが どんな方法がありますか? データ量が多いためマクロなどで一度に行ないたいです。 アドバイスよろしくお願いします。

  • EXCEL VBAのFind について

    VBAで、特定の文字が入っているセル位置(結合セル)を取得したく、 シートのコード記述で --- Private Sub Worksheet_Change(ByVal Target As Range) Dim w_CelObj As Object Set w_CelObj = ActiveSheet.Cells.Find(What:="あああ", LookAt:=xlWhole, MatchByte:=False) MsgBox w_CelObj.Row MsgBox Cells.Find(What:="いいい").Row End Sub ----- と記述し、"aa"も"bb"もどちらの方法でも取得できました。 ですが、これを別のEXCELブック(既にシートがたくさんあり、コードもびっしり記述してあります)で同様のことを行おうとするとエラーになってしまいます。 ※新しいシートを作成し、そのシートにコードをコピーして試しました。 セルの結合を解除すると正常に取得できるのですが、結合セルだとFindされてきません。 調べてみましたが、「Cells.Find」ときちんとセル全体を指定していれば大丈夫のようで、同様の事例を検索できませんでした。 他に何を調べればよいでしょうか? ご協力よろしくお願いします。

専門家に質問してみよう