[[20190109165458]] 『n行目で強制改行したい。』(3ぶろ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『n行目で強制改行したい。』(3ぶろ)

こんばんは。ちょっと質問させてください。
B1〜B200まで長文が打ってある場合、例えば、25行目で強制改行(Alt+Enter)をして、それぞれとなりの列に出力したい場合、どのようなVBAを作ればよろしいのでしょうか?

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 B1、B2、B3・・・とそれぞれ長文が入っているのですか?
 25文字目ならわかるのですが、25行目と言われても、何をもって25行目なのか・・・

 隣の列に出力したい文字は改行以降なのか、すべてなのかもわかりません。

 1,2個でよいのでサンプル提示していただけますか?

(稲葉) 2019/01/09(水) 17:16


あ、、、25文字目でした。。。

申し訳ありません。間違いです・・・。。。

例えば、B1に「この文章はダミーですこの文章はダミーですこの文章はダミーです」
とあった場合に
C1に
この文章はダミーですこの文章はダミーですこの文章は
ダミーです

と強制改行入れた状態で表示させたいのです。

B2に「この文章はダミーですこの文章はダミーですこの文章はダミーですこの文章はダミーです」

とあった場合に、
C2に
この文章はダミーですこの文章はダミーですこの文章は
ダミーですこの文章はダミーです

という感じで表示させたいです。

このようなのが、200行以上あります。

※説明が下手ですみません。
(3ぶろ) 2019/01/09(水) 17:53


 25文字目だけでよければ、関数で行けそうですが、どうでしょう?
 =REPLACE(B1,25,1,MID(B1,25,1)&CHAR(10))
(稲葉) 2019/01/09(水) 18:08

 そろそろ帰宅するのでVBAのほうも置いときます。
    Sub test3()
        Dim i As Long
        Dim w As Variant
        w = Range("B1", Cells(Rows.Count, "B").End(xlUp)).Value
        With CreateObject("VBScript.RegExp")
            .Pattern = "(.{25})" '◆ここで25文字ごとをセットする
            .IgnoreCase = True
            .Global = True
            For i = 1 To UBound(w)
                w(i, 1) = .Replace(w(i, 1), "$1" & Chr(10))
            Next i
        End With
        Range("C1").Resize(UBound(w)).Value = w
    End Sub

(稲葉) 2019/01/09(水) 18:32


REPLACE なら

=REPLACE(B1,26,0,CHAR(10)) でも良いですよ。

(チオチモリン) 2019/01/09(水) 18:57


 文字数0ってできるんですね
 勉強になりました
(稲葉) 2019/01/09(水) 19:49

稲葉様、チオチモリン様回答有り難うございます。

どうもうまく行きません、、、

=REPLACE(B1,25,1,MID(B1,25,1)&CHAR(10))
=REPLACE(B1,26,0,CHAR(10))

でも両方とも、CHAR10がうまく適用されいないようです・・・。。。

VBAの方は、

実行時エラー '13':
型が一致しません。

と言われ、うまく行きません。。。
(3ぶろ) 2019/01/09(水) 20:37


改行表示は、「折り返して表示」が有効の時にそのように表示されます。

(チオチモリン) 2019/01/09(水) 20:45


 エラーが出たときの網掛け場所はどこでしょう?
(稲葉) 2019/01/09(水) 21:08

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.