『対象セル範囲内の文字列を、そのセル範囲に合わせて割り付けます。』とヘルプにあります。
一般機能で言えば、[編集]-[フィル]-[文字の割付]です。
文章をシートに配置する時に、セル範囲、というかセルの列幅に合わせて(見た目の)行末を揃え、複数行に渡って配置調整してくれる。...というような機能のようです。
テキストボックスを使えばいいのでは?と思うのであまり使った事はないですが、どうなのでしょうね。
実際にはちょっとした制限があり、
・256文字以降は切り捨てられる。
・改行文字が無視される。
・行頭のスペースが無視される。
ようです。
一度このメソッドを使ってレスを入れた事がありますが、その時は上記制限について改行文字の対応しかしていませんでした。なので今回改良版を考えてみました。
経由でもいいのでForms.TextBoxを使うと、改行コードがvbCrLfになるので戻す必要がある時に便利かもしれません。
一般機能で言えば、[編集]-[フィル]-[文字の割付]です。
文章をシートに配置する時に、セル範囲、というかセルの列幅に合わせて(見た目の)行末を揃え、複数行に渡って配置調整してくれる。...というような機能のようです。
テキストボックスを使えばいいのでは?と思うのであまり使った事はないですが、どうなのでしょうね。
実際にはちょっとした制限があり、
・256文字以降は切り捨てられる。
・改行文字が無視される。
・行頭のスペースが無視される。
ようです。
一度このメソッドを使ってレスを入れた事がありますが、その時は上記制限について改行文字の対応しかしていませんでした。なので今回改良版を考えてみました。
経由でもいいのでForms.TextBoxを使うと、改行コードがvbCrLfになるので戻す必要がある時に便利かもしれません。
'UserForm Module Option Explicit Private Sub CommandButton1_Click() Dim flg As Boolean Dim chk As Boolean Dim s() As String Dim tmp As String Dim n As Long Dim i As Long On Error GoTo errHndlr With ActiveSheet n = .Cells(.Rows.Count, 1).End(xlUp).Row If Not IsEmpty(.Cells(n, 1).Value) Then n = n + 1 Application.DisplayAlerts = False s = Split(Me.TextBox1.Text, vbLf) For i = 0 To UBound(s) Do flg = Len(s(i)) > 254 '[ ]内は半角|全角スペース chk = s(i) Like "[ ]*" If flg Then tmp = Mid$(s(i), 255) s(i) = Left$(s(i), 254) End If If chk Then s(i) = "''" & s(i) With .Cells(n, 1) .Value = s(i) .Justify End With If chk Then .Cells(n, 1).Value = Mid$(.Cells(n, 1).Value, 2) n = .Cells(.Rows.Count, 1).End(xlUp).Row If flg Then s(i) = .Cells(n, 1).Value & tmp Else Exit Do End If Loop n = n + 1 Next 'vbCr消してもいいけど残しておけば戻す時に使えそう。 '.Columns(1).Replace What:=vbCr, Replacement:="", LookAt:=xlPart End With Me.TextBox1.Text = "" errHndlr: Application.DisplayAlerts = True End Sub '------------------------------------------------- Private Sub CommandButton2_Click() Dim s As String Dim v With ActiveSheet With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)) v = Application.Transpose(.Value) If Not IsArray(v) Then Exit Sub .ClearContents End With End With s = Join(v, "") Me.TextBox1.Text = s End Sub