• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルマクロで行挿入)

エクセルマクロで行挿入

このQ&Aのポイント
  • エクセルでのデータ管理において、キャンセルや日程変更が発生した場合、行単位で取り消し線と文字の書式を変更し、見た目で無くなったことを示しています。
  • しかし、赤字の行の一つ上に新しい行を挿入するマクロの作成が必要です。
  • 具体的な行数指定や書式指定の方法が分からないため、マクロ初心者としては助言をいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

VBAで出来る。 しかし質問者には難しいと思う。 全セルを舐めて聞くなら難しくは無いが、これはスマートでないと言う思いがあるので、Findを使ってみた。 しかし私も苦労した。値の検索と違って、WEBにも、書式の検索の例は探すのが難しいのと、Findそのものの使い方の難しさがある。 また行挿入は以下行の位置をヅラすので、扱いが難しい。それで最下行から上に向かって処理をやったりする。 (1) フォント色が赤で、かつ (2) 取り消し線が引いてある (3) (1)(2)のセルは同一行には2つない(これをはずすと、ロジックが少し複雑になる) の3条件であること。 シートでの存在するセルの位置は問わない。 ーーー Sub test01() Range("b1").Activate fst = "y" Application.FindFormat.Font.Color = vbRed Application.FindFormat.Font.Strikethrough = True Do Set r = Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, MatchByte:=False, SearchFormat:=True) MsgBox r.Row & "=" & mae If r.Row = mae Then Exit Do r.EntireRow.Insert r.Offset(2, 0).Activate If fst = "y" Then mae = r.Row fst = "n" Loop Until r Is Nothing End Sub 一応テストしてますが、さらに充実したテストが必要。

excelbeginner
質問者

補足

ご解答ありがとうございます。 さっそくVBAでやってみたらできました。 理想的です。ありがとうございます。 msgboxが出てくるのですが、これが出なくなる方法はあるのでしょうか?

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 希望通りでなかったらごめんなさい。 A列から赤の取り消し線が入っているとします。 複数行ある場合はすべての取り消し線が入っている1行上に行が挿入されてしまいますが・・・ 一例です。 操作したいSheet見出し上で右クリック → コードの表示 を選択し↓のコードをコピー&ペーストしてマクロを実行してみてください。 Sub test1() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(i, 1).Font.ColorIndex = 3 And _ Cells(i, 1).Font.Strikethrough = True Then Rows(i).Insert End If Next i End Sub 最初に書いたように複数行ある場合は取り消し線が入っている行すべてに適用されてしまいますので、 データを入力後、空白行を削除するコードも載せておきます。 Sub test2() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(i, 1) = "" Then Rows(i).Delete (xlUp) End If Next i End Sub この「test2」を実行すれば、余分な空白行は削除されると思います。 以上、参考になれば良いのですが、 的外れならごめんなさいね。m(__)m

関連するQ&A