• ベストアンサー

EXCEL(VBA) 末尾の改行のみ削除したい

[ALT]-[ENTER]を使い、セル内を改行した文章があります。 その文章の末尾にある改行のみ削除したいのですが ReplaceやRtrimを使うと、末尾以外の改行も削除されたりして、 思うような結果が得られません。 イメージとしては以下のようにしたいと思っております。 ↓このように表示されているものを ----------------------- 本日は晴天なり。 1.AAAAA 2.BBBBB ----------------------- ↓このようにしたい (2.BBBBB 以降にある改行のみ削除したいです。) ----------------------- 本日は晴天なり。 1.AAAAA 2.BBBBB ----------------------- 判りづらい説明で申し訳ありません。 何か良い方法はないでしょうか?

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

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

正規表現で置換すればできると思います。 A1の文字列の末尾にある改行を削除してA2に表示します。 参照設定でVBScript Regular Expressions ?.?にチェックを入れる Sub test() Dim re As New RegExp re.Pattern = "\n+$" '末尾の1個以上の改行 Range("A2") = re.Replace(Range("A1"), "") Set re = Nothing End Sub または、 Sub test() Dim re As Object Set re = CreateObject("VBScript.RegExp") re.Pattern = "\n+$" '末尾の1個以上の改行 Range("A2") = re.Replace(Range("A1"), "") Set re = Nothing End Sub

ukemochi
質問者

お礼

早々の回答ありがとうございました。 大変に助かりました。 「正規表現」の意味がよくわかっていないので、 もっともっと、しっかりと勉強したいと思います。 本当に有難うございました。

その他の回答 (3)

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

こんにちは。 このようにして、最後の後ろの改行コードを探してあげればよいと思います。 Sub Test1() Dim c As Variant Dim i As Integer For Each c In Range("A1", Range("A65536").End(xlUp))  If VarType(c.Value) = vbString Then     i = InStrRev(c.Value, Chr(10))     If i >= Len(c.Value) Then     c.Value = Mid$(c.Value, 1, i - 1)     End If  End If Next c End Sub ただし、空白値が入っていると、削除しませんので、条件式の部分を、 If i >= Len(c.Value) Or Trim(Mid$(c.Value, i + 1)) = "" としてあげなくてはなりません。 また、#3さんのご指摘も考えられますね。フォントサイズが、13以上の場合だと思いますが、その標準スペースの間隔がずれてしまうので、バランスを取るために、そのようなスタイルにしていることがあります。

ukemochi
質問者

お礼

回答有難うございます。 色々な本を読んだり、ネットで検索して色々とやってみたのですが 思うように動かず、悪戦苦闘しておりました。 助かりました。有難うございます。

  • htmcr
  • ベストアンサー率36% (11/30)
回答No.3

回答ではありませんが。 それは削除してしまって大丈夫な改行でしょうか? Excelでは、印刷時に文字が切れてしまう現象を回避するために、 セルの文章の末尾にわざと余分な改行を加えてることが多いので。 上記のことをご存知であれば問題ないですが、 もしそうでなければファイルの作成者などに確認してみてください。

ukemochi
質問者

お礼

回答ありがとうございました。 今回は削除しても大丈夫な改行でした。 末尾に改行が無いと、印刷時に文字が切れてしまうんですね。 知りませんでした。 勉強になりました。有難うございます。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

一番最後が改行なら、文字数を-1にするとかでは、ダメですか? :試してないので、違っていたらすいません。

ukemochi
質問者

お礼

回答有難うございました。 文字数-1で試してみました。 今回は、違う方法で行うことにしましたが、今後の参考にさせて頂きます。 有難うございました。

関連するQ&A

  • 全セルの末尾に改行(Alt+Enter)を入れたい

    エクセル2003を使用しています。 セルを複数選択し、全セルの末尾に改行(Alt+Enter)を入れたいのですが方法はありますか。 ※「改行を一度に削除したい」という質問はよくありますが、その逆となります。

  • エクセルの改行を一括削除したい

    エクセルの改行を一括削除したい エクセル2002を利用しています。 複数のセルに、改行(Alt+Enter)で文章が入力されているのですが、 この改行をまとめて削除する方法はないでしょうか?

  • VBAで改行削除

    A列でセル内改行(Alt+Enter)をするとメッセージボックスが出るようにしましたが、 且つ、改行以降を削除したいのですが どうすればよろしいでしょうか? <例> あ か ↓ あ  "か"と、改行を削除したい。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Value Like "*" & vbLf & "*" And Target.Column =1 Then MsgBox "改行禁止", vbOKOnly + vbCritical End If End Sub 宜しくお願い致します。

  • EXCELのセル内改行の削除について

    お世話になります。 どなたかご教授お願いします。 セル内のデータの末尾にあるセル内改行を一括削除するにはどのようにすればいいのでしょうか。 前後空白を削除する、trim関数の「セル内改行」版のような事をしたいのですが、どのようにマクロを記述すれば良いかわかりません。 A1~A1000まで下記のようなデータが入っています。末尾のセル内改行は一つとは限らず、二つ以上入っていることもあります。 あああ(セル内改行) いいいい(セル内改行) ううう(セル内改行) ↓ あああ(セル内改行) いいいい(セル内改行) ううう すみませんが、どなたかご教授お願いします。

  • セル内で改行(Alt+Enter)以降の文字列を削除(Excel VBA)

    セル内にAlt+Enterで改行している文字列があるのですが、1つめの改行以降の文字列を削除したいのですが、方法が分かりません。 どなたかお教えいただけないでしょうか? Excel2002を使用しております。 あいうえお かきくけこ   ↓ あいうえお よろしくお願いします。

  • エクセルのセル内での改行forMac

    エクセルの一つのセルのなかで文章を改行したいのですが、MacではAlt+Enterではできません。どなたか教えてくれませんか~!?!?

  • 【Excel】文字の削除方法について

    Excelで1つのセルの中に Alt+Enterで数行に改行された文章が入っています。 だいたい2000行くらいです。 1行目の先頭と末尾は必ず*と決まっています。 この先頭の1行だけ削除したいのですが、何か良い方法はないでしょうか? マクロで1文字づつ確認しながら、2つ目の*が来たら そこまで削除という方法くらいしか思いつきません。

  • エクセル2003の改行について

    エクセル2003を使用しています。 結合したセル内で文字を入力し、任意の場所で改行を行うには、通常「Alt」+「Enter」を使いますが、VBA等を使用し、「Alt」を押さずに「Enter」のみで、任意の場所で改行させることは可能でしょうか? できれば適応させるセルの番地も指定できればうれしいのですが・・・ よろしくお願い申し上げます。

  • Excel セル内改行について

    「Alt」+「Enter」でセル内改行が出来ません。 Wordでも「Alt」+「Enter」が利きません。 このような場合、どのような原因が考えられるでしょうか? 宜しくお願いします。

  • エクセルで途中から文章が改行できません…

    パソコンに詳しい方お願いします。 800字程度のワードの文章をコピーしてエクセルに張り付けたところ600字程度までは改行できているのですが、それ以降改行されず文章が途中で切れてしまうということが起こり困っています。 ちなみに、文章を張り付けたあとで、セルの書式設定でセルの結合と折り返して全体を表示するとしたところ今回の現象が起こりました。 すでに質問されている基本的な改行方法である「Alt+Enter」をいちいち一文一文にやるというのは面倒なので、その解答以外でお願いします。

専門家に質問してみよう