[[20210609145251]] 『折り返して全体を表示するセルに改行時にカンマを』(みちる) ページの最後に飛ぶ

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

 

『折り返して全体を表示するセルに改行時にカンマを加えたい』(みちる)

複数のセルの文字列を一つのセルに改行しながら転機し、折り返される文字列には一行目の文字の最後に","を加えて一つの文字列だと分かるようにするマクロを組みたいと考えています。

あらかじめ、折り返される文字数を調べて、その後に","を加えるマクロを組みましたが、漢字が混ざる文字列は違う位置で折り返されるため上手くいきません。

他に方法があればご教授頂ければ幸いです。ちなみにvbaは初心者です。

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


>マクロを組みましたが、漢字が混ざる文字列は違う位置で折り返されるため上手くいきません。
まずは、そちらを提示してどのように上手くいかなかったのか説明してみてはどうでしょうか?

(もこな2) 2021/06/09(水) 15:51


ご返信ありがとうございます。

転記するSheet3のB10のセル幅(17.13)で文字が折り返される10文字目とそれ以降の間に","を加え、Sheet2にあるB5からB2144の値を改行しながら転記していくマクロです。

文字列が全てカタカナの場合、成功しますが漢字や記号が混ざる場合は9行目や11行目で折り返されるため上手くいかないという状態です。

Sub 一つのセルに転記()
Dim sh As Worksheet
Set sh = Worksheets("Sheet2")
Dim r As Range

Dim i As Long
For i = 5 To 2144

Set r = sh.Cells(i, 2)

If Len(r) >= 10 Then
r.Value = Left(r, 10) & "," & Mid(r, 10 + 1)
End If

Next

With Worksheets("Sheet3").Range("B10")
.Value = Join(WorksheetFunction.Transpose(sh.Range("B5", sh.Cells(Rows.Count, 2).End(xlUp))), vbLf)
.EntireRow.AutoFit
End With

End Sub
(みちる) 2021/06/09(水) 16:22


 直接的な回答ではありませんが。
 折り返されるのは10文字目、とおっしゃっていますがその文字数はフォントによっても変わりますし、なんならシートの縮尺を変動させただけでも変わることがあります。
 ディスプレイ毎に違ったりもしますので、環境に左右されるものとなります。

 何故そのようにしたいのかはわかりませんが、見栄え上の問題だけだと仮定すると
 カタカナと漢字や記号が同じ文字数で折り返されるフォントを探してそのフォントに設定するのがスムーズなのではないでしょうか。
(*) 2021/06/10(木) 10:56

ご返信ありがとうございます。

偶然にももともと先方から指定されていた書式とフォントを用いましたら、上手くいきました。
助かりました。ありがとうございます!
(みちる) 2021/06/10(木) 12:34


コメント返信:

[ 一覧(最新更新順) ]


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