[[20180309111944]] 『セルの最後に改行を追加。』(塗) ページの最後に飛ぶ

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

 

『セルの最後に改行を追加。』(塗)

VBAでセルの中にある最後のデータの最後に改行を追加するにはどうしたらよいでしょうか。(データのあるセルの一番下を一行空ける)

別シートからデータを転記しているSheet1があります。
そのSheet1の「指定した範囲内のデータの下に改行を追加したい」です。

頻繁にデータの更新があり、Sheet1のデータも変わるため、手動でなくVBAで行うにはどのようにしたらよいでしょうか。

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


「転記するというプログラム」の文の最後に「& vbLf」はプログラム上できません。
できないというよりか、Sheet2の複数行のデータを一つのセルにまとめて転記している為、
一行一行改行されてしまい、理想の形ではなくなってしまいます。
(塗) 2018/03/09(金) 11:31

 >セルの中にある最後のデータの最後に改行を追加する
 は
 >(データのあるセルの一番下を一行空ける)
 のことを言っているのですか?

 意味が違うような感じを受けますが?
(seiya) 2018/03/09(金) 11:35

返信ありがとうございます。
説明下手で申し訳ありません。

イメージしているものは、現在、一つのセルに
__
ああ
いい
うう
 ̄ ̄
と入力されていた場合、
__
ああ
いい
うう
  
 ̄ ̄
のような感じにするイメージです。

(塗) 2018/03/09(金) 11:48


こんちは ^^ 横から失礼いたします。

 Option Explicit
'**********************************************************
Sub main()
    Dim sh01 As Worksheet
    Set sh01 = ThisWorkbook.Worksheets("Sheet1")
    sh01.Range("A1") = sh01.Range("A1") & vbLf
    Set sh01 = Nothing
End Sub

 でしょうか。
(隠居じーさん) 2018/03/09(金) 12:00

 転記するセルは複数ですか?
 どのような形で転記されていますか?
(seiya) 2018/03/09(金) 12:02

Seiyaさんがフォローされてるところ横からあれこれ言うのも失礼なので、以下つぶやき程度としてご理解下さい。

たとえばA1セル内の文字列の最後に改行入れたいだけなら、こんな感じでよいのではないかと・・
Sub つぶやき()

    With Range("A1")
        .Value = .Value & vbLf
    End With
End Sub
(もこな2) 2018/03/09(金) 12:05

↑のおまけ。
ActiveSheetの全セルに同じことをするならこんな感じかとおもいますが、プランAを実行した場合、数式なんかも書き換えちゃうので、プランBのほうが良いかもです。

Sub プランA()

    Dim MyRNG As Range

    For Each MyRNG In ActiveSheet.UsedRange
        '↓Valueプロパティを省略してあります
        If MyRNG <> "" Then MyRNG = MyRNG & vbLf
     Next MyRNG
End Sub

Sub プランB()

    Dim MyRNG As Range

    For Each MyRNG In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 3)
        MyRNG = MyRNG & vbLf
    Next MyRNG
End Sub
(もこな2) 2018/03/09(金) 13:48

 >Sheet2の複数行のデータを一つのセルにまとめて転記している為

 Sheet2の単一列内で連続した範囲が選択された状態で、実行するとSheet1のA1に結果を表示。
 日付、もしくは特殊なセル書式が設定されている場合はtest2
 (此方は連続していなくてもOK)

 Sub test()
     With Selection
         Sheets("sheet1").Range("a1").Value = _
         Join(Filter(.Parent.Evaluate("transpose(if(" & .Address & _
             "<>""""," & .Address & "))"), False, 0), vbLf) & vbLf
     End With
 End Sub

 Sub test2()
     Dim r As Range, txt As String
     For Each r In Selection
         If r.Text <> "" Then txt = txt & r.Text & vbLf
     Next
     Sheets("sheet1").Range("a1").Value = txt
 End Sub
(seiya) 2018/03/09(金) 20:12

コメント返信:

[ 一覧(最新更新順) ]


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