Excel VBAに関する質問掲示板です。
Excel VBA 質問スレッド No.831 (解決済)
g列に;があると改行。そしてセルに残った;を削除
投稿者 : たす 投稿日時 : 2022/06/24(Fri) 13:55:04 OS : 未指定 EXCEL : 未指定
マクロについて質問です。
;で改行。下記のサイトは句読点ですが、サイトのようにすると、特定のセルだとできますが、この部分をg列全ての範囲を指定する場合どういう式になりますか?
また改行すると他の列は空白になってしまいます。その空白になってる行には上のセルに入力されてるものを空白列にぜんぶのコピーしたいです。
例えばaからc列が空白だから上の入力されてるセルのをコピーして空白を埋めたいっていう感じです。
よろしくお願いします
https://vbabeginner.net/divide-sentences-commas/#:~:text=%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF27%E8%A1%8C,%E3%80%82%E2%80%9D%20Then%E3%80%8D%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
Excel・123閲覧
マクロについて質問です。
;で改行。下記のサイトは句読点ですが、サイトのようにすると、特定のセルだとできますが、この部分をg列全ての範囲を指定する場合どういう式になりますか?
また改行すると他の列は空白になってしまいます。その空白になってる行には上のセルに入力されてるものを空白列にぜんぶのコピーしたいです。
例えばaからc列が空白だから上の入力されてるセルのをコピーして空白を埋めたいっていう感じです。
よろしくお願いします
https://vbabeginner.net/divide-sentences-commas/#:~:text=%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E3%81%AF27%E8%A1%8C,%E3%80%82%E2%80%9D%20Then%E3%80%8D%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
Excel・123閲覧
[返信 1] Re : g列に;があると改行。そしてセルに残った;を削除
投稿者 : さんこう 投稿日時 : 2022/06/24(Fri) 14:21:33
>その空白になってる行には上のセルに入力されてるものを空白列にぜんぶのコピーしたいです。
ここだけ。
'// 下に1行追加
r.Offset(1, 0).EntireRow.Insert
r.Offset(1, 0).EntireRow.Value = r.EntireRow.Value '追加
>その空白になってる行には上のセルに入力されてるものを空白列にぜんぶのコピーしたいです。
ここだけ。
'// 下に1行追加
r.Offset(1, 0).EntireRow.Insert
r.Offset(1, 0).EntireRow.Value = r.EntireRow.Value '追加
[返信 2] Re : g列に;があると改行。そしてセルに残った;を削除
投稿者 : てらてら 投稿日時 : 2022/06/24(Fri) 14:43:34
こんにちは。
質問者さんが、コードを掲載しないのは上手くないと思いますよ。
他の人がみても参考になりませんから。
回答ですが、逐次行が追加されるので、最後にすぐ下を見に行って値があれば最初に戻ればOKでしょう。以下の例ではTOPというラベルに飛んでいます。
以下の例ではG列は関係ありません。適当にG列の値がある先頭を選択して実行してください。
コードパクりました m(_ _)m メンゴ
こんにちは。
質問者さんが、コードを掲載しないのは上手くないと思いますよ。
他の人がみても参考になりませんから。
回答ですが、逐次行が追加されるので、最後にすぐ下を見に行って値があれば最初に戻ればOKでしょう。以下の例ではTOPというラベルに飛んでいます。
以下の例ではG列は関係ありません。適当にG列の値がある先頭を選択して実行してください。
Sub LineBreak()
Dim r As Range '// 処理対象セル
Dim s As String '// セル文字列
Dim c As String '// セル文字列の指定位置の1文字
Dim i As Integer '// Mid()でのセル文字列の1文字を指定するためのカウンタ
'// アクティブセルのRangeオブジェクトを取得
Set r = ActiveCell
TOP:
'// セル文字列を取得
s = r.Value
'// カウンタを初期化
i = 1
'// 最終文字まで文字数ループ
Do
'// 最終文字の場合(最終文字が句点・読点の場合は処理しない)
If i >= Len(s) Then
Exit Do
End If
'// 1文字取得
c = Mid(s, i, 1)
'// 句点か読点の場合
'If c = "。" Or c = "、" Then
If c = ";" Then '//----変更
'// 下に1行追加
r.Offset(1, 0).EntireRow.Insert
'// 元のセルの文章を句点読点までの文章に書き換える
r.Value = Left(s, i)
'// 下のセルに句点読点以降の文章を書き込む
r.Offset(1, 0).Value = Mid(s, i + 1, Len(s))
'// 処理対象セルを追加した下のセルに変更(行追加後のセル文字列を処理対象とするため)
Set r = r.Offset(1, 0)
'// セル文字列を更新
s = r.Value
'// 句点読点位置カウンタを初期化
i = 0
End If
'// 句点読点位置カウンタを加算
i = i + 1
Loop
Set r = r.Offset(1, 0)
If r.Value <> "" Then GoTo TOP
End Sub
コードパクりました m(_ _)m メンゴ
[返信 3] Re : g列に;があると改行。そしてセルに残った;を削除
投稿者 : たす 投稿日時 : 2022/06/28(Tue) 15:25:22
ありがとうございました
ありがとうございました
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
返信入力フォーム
( 処理日時 : 2022-07-07 14:02:46 )