|
▼mori さん:
>前回は「合計」と記入されているセルがある行の下に1行挿入したいと
>言うことでした。
>この逆(「合計」と記入されているセルがある行の「上」に1行挿入
>したい)と言うのは可能でしょうか?
これまでのコードは 転記処理のFor〜Nextループに入る前に
書き込み先の行番号(lngPresentRowIndex)に 4 を入れておいて、
1行書き込み処理が終わったら、「次に書き込む行番号」を指定するために
lngPresentRowIndex に1を加えていました。
その後、値が「合計」だったときだけ、「次の書き込み先行番号」に 2 を
加える処理を追加して、結果として1行空白行を挿入した転記処理を実現す
るように改良しました。
> lngPresentRowIndex = 4
> For lngRow = 31 To lngMaxRow
>
> '転記処理
>
> If 値が「合計」ならば
lngPresentRowIndex = lngPresentRowIndex + 2 '次の転記行番号
Else
lngPresentRowIndex = lngPresentRowIndex + 1 '次の転記行番号
End If
> Next
こんどはこれを
'最初の書き込み行番号 - 1 を初期値とする
◆ lngPresentRowIndex = 4 - 1
としておいて、
◆ For〜Loopの先頭で 行番号を 現在の値に +1 する
◆ ただし、値が「合計のときは」さらに +1 した行に、転記する
という風にすればよいと思います。
'Dim InsertLine As Long (不要)
lngPresentRowIndex = 4 - 1 '◆変更(本来の開始行-1)
For lngRow = 31 To lngMaxRow
(途中省略)
'書き込み行インデックスを加算
lngPresentRowIndex = lngPresentRowIndex + 1 '◆ここへ移動
If strTrimedTekiyo = "合計" Then
lngPresentRowIndex = lngPresentRowIndex + 1 '◆この行追加
.Cells(lngPresentRowIndex, 2).Value = strTekiyo
.Cells(lngPresentRowIndex, 6).Value = strKingaku
ElseIf strTrimedTekiyo = "値引" Then
.Cells(lngPresentRowIndex, 2).Value = strTekiyo
.Cells(lngPresentRowIndex, 6).Value = strKingaku
Else
.Cells(lngPresentRowIndex, 2).Value = strTekiyo
.Cells(lngPresentRowIndex, 3).Value = strSuryo
.Cells(lngPresentRowIndex, 4).Value = strTani
End If
Next
かんちがいなら、ゴメン。
|
|