『転記先シートのひな形が崩れてしまう』(ちっち)
教えてください。
収納調書シートから会計1.シートへ転記させたいです。
以下のコードだと転記自体はうまくいくのですが、会計1.シート100行目にあった合計行や、罫線がすべて消えてしまいます。
どのようにコードを変更させればよいのでしょうか?
Sub 学級費_収()
With Sheets("会計1.").Cells(Rows.Count, "A").End(xlUp)
.Offset(1, 0).Resize(3) = Sheets("収納調書").Range("G2").Value '日付
.Offset(1, 1).Resize(3) = Sheets("収納調書").Range("I3").Value '整理番号
.Offset(1, 3).Resize(3) = Sheets("収納調書").Range("I5").Value '項目
.Offset(1, 4).Resize(3) = Sheets("収納調書").Range("C19:C21").Value '内訳
.Offset(1, 5).Resize(3) = Sheets("収納調書").Range("G19:G21").Value '単価
.Offset(1, 6).Resize(3) = Sheets("収納調書").Range("I19:I21").Value '数量
.Offset(1, 7).Resize(3) = Sheets("収納調書").Range("J19:J21").Value '金額
End With
'空白がある場合
If WorksheetFunction.CountBlank(Sheets("会計1.").Range("A1").CurrentRegion.Columns(5)) > 0 Then
'空白行を削除
Sheets("会計1.").Range("A1").CurrentRegion.Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
MsgBox "処理が完了しました。", 0, "確認"
End Sub
< 使用 Excel:Excel2021、使用 OS:Windows11 >
>Sheets("会計1.").Range("A1").CurrentRegion.Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 上記の部分で、 Columns(5)(今回はE列)に空白のセル(xlCellTypeBlanks)がある場合、 その空白セルを含む行を削除(EntireRow.Delete)するコードになっています。
消えてほしくない合計行が100行目固定だとして、乱暴に場当たり対応するならば、
With Sheets("会計1.") .Range("E100") = "dummy" On Error Resume Next .Range("A1").CurrentRegion.Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow.Delete On Error GoTo 0 .Cells(Rows.Count, "E").End(xlUp).ClearContents End With
とでもしておけば削除されないのでは。 (知らんけど) 2025/05/02(金) 21:48:24
(ちっち) 2025/05/03(土) 14:06:14
「会計1.」シートのE列(内訳)がブランクだったら、その行は空白になればいいという事ですよね。 元のコードがDeleteだったのでそのまま使いましたが、そういうことならClearContentsで良いのでは。 (知らんけど) 2025/05/03(土) 14:35:17
そもそも必要な部分だけ転記するコード。 ・転記の条件 内訳列が空白なら、その行は転記しない(質問のコードから推測) 「会計1.」シートの体裁は弄らない。 ※支出伺にも転用しやすいように、できるだけ元のコードを活かしています。
Sub 学級費_収_1() Dim i As Long, n As Long With Sheets("会計1.").Cells(Rows.Count, "A").End(xlUp) For i = 19 To 21 '内訳の範囲 C19:C21 If Sheets("収納調書").Cells(i, "C") <> "" Then n = n + 1 .Offset(n, 0) = Sheets("収納調書").Range("G2") '日付 .Offset(n, 1) = Sheets("収納調書").Range("I3") '整理番号 .Offset(n, 3) = Sheets("収納調書").Range("I5") '項目 .Offset(n, 4) = Sheets("収納調書").Cells(i, "C") '内訳 .Offset(n, 5) = Sheets("収納調書").Cells(i, "G") '単価 .Offset(n, 6) = Sheets("収納調書").Cells(i, "I") '数量 .Offset(n, 7) = Sheets("収納調書").Cells(i, "J") '金額 End If Next End With MsgBox "処理が完了しました。", Title:="確認" End Sub
これで一旦区切りとしますのでご承知を。 (知らんけど) 2025/05/03(土) 15:35:25
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.