
初めて質問します。
VBAを4月から始めました。
ネットでいろんな関数を見ましたが全然わかりません。
VBAの勉強と編集するセルが多いので一括でどうしてもやりたいので質問します。
sheet1(参照元のシート)
sheet2(印刷出力用のシート)
sheet1のあるセル内(結合なしの1セル内)にこのような文章があります。
目次
○○○○○○○○○○○○○○○○○○です。
目次
○○○○○○○○○○○○○○○○○○です。
目次
○○○○○○○○○○○○○○○○○○です。
・
・
・
sheet2は、印刷用でセルの幅が違うので下記のよう出力したいです。
試しにsplit関数でvbLfを目印に使って、変数.variantに代入、for nextで複数のセルに分割して出力することでこの形にすることができました。
目次
○○○○○○○○○○○○
○○○○○○です。
目次
○○○○○○○○○○○○
○○○○○○です。
目次
○○○○○○○○○○○○
○○○○○○です。
・
・
・
問題点としては、目印になる改行コードの挿入ができていないことです。
sheet1は、指定の文字数でvbLfを挿入、vbLfがあれば次の文字から指定の文字数をやり直す。
このような形にできればいいです。
目次vbLf
○○○○○○○○○○○○vbLf○○○○○○です。vbLf
目次vbLf
○○○○○○○○○○○○vbLf○○○○○○です。vbLf
目次vbLf
○○○○○○○○○○○○vbLf○○○○○○です。vbLf
・
・
・
1セル毎に手作業で改行をしていく以外に手はないでしょうか?
皆様のお知恵をお貸しください。
No.1ベストアンサー
- 回答日時:
こんなので、参考になりますか?
半年やっていれば、このくらいのコード、読めますよね?
Sub sample()
Dim A As Variant
Dim B As Variant
Dim i As Long
Dim j As Long
A = Range("A1").Value
For i = 1 To Len(A)
B = B & Mid(A, i, 1)
If Mid(A, i, 1) = vbLf Then
j = 0
Else
j = j + 1
End If
If j >= 12 Then
B = B & vbLf
j = 0
End If
Next i
Range("A2").Value = B
A = Split(B, vbLf)
Range("A3").Resize(UBound(A)) = WorksheetFunction.Transpose(A)
End Sub

No.3
- 回答日時:
こんにちは
直接の回答ではありませんが・・・
>sheet2は、印刷用でセルの幅が違うので下記のよう出力したいです。
要は、Sheet1では長く1行になっている文を、Sheet2ではセル幅におさめて改行(=折返し)表示にしたいということと解釈しました。
原稿データは全てSheet1にあるものと推測しますので、Sheet2の各セルには書式で「折り返して全体を表示する」を設定しておきます。
その上で、値を参照する際に、コピペで行っているのであれば「形式を選択して~」から「値」でペースト。
あるいは、(多分)Sheet1と対応するセルが決まっているのでしょうから、あらかじめ「=Sheet1!A1」のような参照式を設定しておけば良さそうに思います。
このような仕組みにしておくことで、VBAなどを利用せずとも、常にSheet1の内容がSheet2に反映されるようになりますので、そのままで印刷が可能になるものと想像します。
ただし、正確に10文字とか12文字で改行されるというわけにはいかないとは思いますが…
(エクセルの折返し制御依存なので)
また、Sheet1の文章が長すぎて、Sheet2のセルの表示範囲に収まり切らないケースが生じ得ますが、それに関してはVBAの場合でも同様と思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】特定の文字で改行(次の行)に行きたい。
Visual Basic(VBA)
-
エクセル セル内の文字数を超えたら自動的に折り返して表示
Excel(エクセル)
-
エクセルで決まった文字数で改行し,複数行の別のセルに移動させる方法
Excel(エクセル)
-
-
4
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
5
【Excel VBA】 テキストファイルを、特定文字列で改行を入れてExcelに一行ずつ出力
Excel(エクセル)
-
6
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
7
Excel_VBAで改行コードの無いファイルを開きたい。
Excel(エクセル)
-
8
VBAのオートフィルターで該当行がない場合に処理を止めたい
Excel(エクセル)
-
9
ExcelのVBAでGoToの代わりに…
Excel(エクセル)
-
10
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
11
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
12
VBAでEmpty値って何ですか?
Excel(エクセル)
-
13
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
エクセルにて指定文字数以上の時、自動で改行する方法について御存知であれば御教示下さい。
その他(コンピューター・テクノロジー)
-
16
【Excel VBA】セル内に改行を挿入したい
Excel(エクセル)
-
17
エクセルで1行に入力文字数制限と自動改行
その他(Microsoft Office)
-
18
全ての変数を一気にリセットする方法はありますか?
PowerPoint(パワーポイント)
-
19
エクセルのマクロ、特定文字での改行について
Excel(エクセル)
-
20
特定の文字が入ってる行まで繰り返す
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
セル内の一部の文字だけをハイ...
-
Excel countif関数で取り消し線...
-
エクセルで1つのセルにスクロ...
-
マウスポインターが白十字のまま
-
結合していないセルから結合し...
-
VBAで文章を指定の文字数で改行...
-
エクセル2013で英単語を折り返...
-
エクセル_関数_半角カナを全角...
-
セルにぴったし写真を挿入
-
エクセルでセルを上下に結合し...
-
エクセルのカーソルが表示され...
-
全セルの末尾に改行(Alt+Enter...
-
エクセルファイルに _x000D_ と...
-
エクセルの入力規則プルダウン...
-
Excelでcsvやtxtで保存する時に...
-
エクセルの行の下げ方
-
エクセルの白黒の反転で困って...
-
Excel入力で勝手にエンター押さ...
-
エクセルで右隣のセルより優先...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル: セルの枠を超えて表示
-
Excel countif関数で取り消し線...
-
セル内の一部の文字だけをハイ...
-
セルは大きくさせず、中の文字...
-
エクセルファイルに _x000D_ と...
-
エクセルでセルを上下に結合し...
-
Excel入力で勝手にエンター押さ...
-
エクセルで文字を打つと下に、...
-
エクセルで1つのセルにスクロ...
-
エクセル2013で英単語を折り返...
-
エクセルの白黒の反転で困って...
-
全セルの末尾に改行(Alt+Enter...
-
エクセルで画像を透過させて画...
-
セルにぴったし写真を挿入
-
マウスポインターが白十字のまま
-
Excelでcsvやtxtで保存する時に...
-
マウスを使わずにセルにカーソ...
-
エクセルにおいてセル内の文字...
-
セルを結合しても、文字をセル...
-
CSVファイルでテキストの改行の...
おすすめ情報