[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索した対象複数行へのある行内容の複写マクロ』(あらクマ)
最終行の3行目上の行のB列、D列、F列、H列、J列、L列に数式が入力されています。
その行の上に、何行か(状況によって行数は変化)行が挿入されます。
その挿入された行のB列、D列、F列、H列、J列、L列のセルは空白の状況になる可能性があります。
特に、B列セルは空白になる可能性が高いです。
それらの行を見つけ、そのB列、D列、F列、H列、J列、L列のセルに
最終行の3行目上の行のB列、D列、F列、H列、J列、L列に数式を一括複写入力するために、
以下のようなマクロを考えました。
なお、その際、それら以外の行にも同じ状況があったなら、同時にその行にも同じ作業を行おうと、
かんがえました。
Sub 年度更新3()
Dim LastRow3 As Long Dim SagyoRow2 As Long Dim KuhakuGyo2 As Range Dim q As Long
LastRow3 = Cells(Rows.Count, 1).End(xlUp).Row SagyoRow2 = LastRow3-3 '3行目から作業対象最終行までB列のセルをチェックします。 With ActiveSheet For q = 3 To SagyoRow2 'B列のセルが空白なら変数 KuhakuGyo2 に追加 If IsEmpty(Cells(q, 2).Value) Then '最初の空白行に出会ったら行全体を KuhakuGyo2 にセット If KuhakuGyo2 Is Nothing Then Set KuhakuGyo2 = .Rows(q).EntireRow '2件目からは順次 KuhakuGyo2 に追加していく Else Set KuhakuGyo2 = Union(KuhakuGyo2, .Rows(q).EntireRow) End If End If Next q End With
'空白行があれば一括で最終行の3行前のデータをコピーする
If Not KuhakuGyo2 Is Nothing Then
Rows(LastRow3-2).Copy Destination:=Rows(KuhakuGyo2) End If End Sub
上のマクロを実行すると、
「Rows(LastRow3-2).Copy Destination:=Rows(KuhakuGyo2)」のところで、
「実行時エラー'13' 型が一致しません。」
と作業が止まってしまいます。
「Unionメソッド」の使用法への理解が不足しているためだとは思うのですが・・・
どなたか、解決策をご教授くださいませんか。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
'空白行があれば一括で最終行の3行前のデータをコピーする
の部分を以下の通りに書き換えれば動作するはずです。
If Not KuhakuGyo2 Is Nothing Then
Dim tRange as Range For Each tRange In KuhakuGyo2.Rows Rows(LastRow3 - 2).Copy Destination:=Rows(tRange.Row) Next End If
Rows(LastRow3-2).Copy Destination:=Rows(KuhakuGyo2)
のままですと
Rows(KuhakuGyo2)
の部分で
〇行目にコピーするつもりなのに範囲どこそこ、行目にコピーとなり型エラーがでております。
行番号はLong型(とか)でなければならないのに、行番号に範囲型を放り込んでいるのがエラーの原因です。
また、余談ですが
行全体のコピー貼り付けならば一度ユニオンで範囲を取得しなくてもループ処理中に都度コピーしていく方法や行番号を配列として取得する方法などもあります。ご参考までに。
(個人的にユニオンが苦手だから使わないだけですが)
(高橋) 2019/03/20(水) 21:55
>Rows(LastRow3 - 2).Copy Destination:=Rows(KuhakuGyo2) ↓ こうすればいいんじゃないですか? Rows(LastRow3 - 2).Copy Destination:=KuhakuGyo2
(半平太) 2019/03/20(水) 22:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.