- ベストアンサー
Excel VBAで、検索後行の挿入をしたい。
A B C 1月 金額 2月 金額 3月 金額 1 5 100 15 300 ・・ 2 3 60 15 300 ・・ という表があります。 この表(シート1)を、別のシート(シート2)にコピーして、 「金額」行の隣に1行追加したいのです。。。 Sub 貼付け() Sheets("シート1").Select Cells.Select Selection.Copy Sheets("シート2").Select ActiveSheet.Paste End Sub Sub 検索後挿入() Dim objRange As Range Set objRange = Columns("2:2").Find("金額") として、金額を探すまではできました。 金額セルの隣を選択し、3行追加するにはどうしたらいいでしょうか・・。どうぞ宜しくお願いします!
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 私も、#2さんと同様に良く分かりません。 >Set objRange = Columns("2:2").Find("金額") まず、これが分かりません。つまり、タイトル行は、2行目にあるということですか?表と違うようですが。 Find メソッドは、意外に取り扱いがややこしいです。 >金額セルの隣を選択し、3行追加するにはどうしたらいいでしょうか・・。 >金額行の、右隣に3行追加、です。 3列なら意味が分かりますが、その後は、探せなくなるのではありませんか? 結果、どのようになさりたいのですか? おそらく、 1 2 1月 金額 2月 金額 3月 金額 3 5 100 15 300 ・・ 4 3 60 15 300 ・・ ↑ ↑ ↑ この部分に、3列入れたいのではありませんか? Sub ColumnInsert() Dim i As Integer Application.ScreenUpdating = False '2行目で検索 For i = Range("IV2").End(xlToLeft).Column To 1 Step -1 If InStr(Cells(2, i).Value, "金額") > 0 Then '3列追加 Cells(2, i + 1).Resize(, 3).EntireColumn.Insert End If Next i Application.ScreenUpdating = True End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17070)
>言葉足らずで大変失礼しました。 >金額行の、右隣に3行追加、です。 ことば足らずでなく、エクセルの基本的な行と列の表現に混乱している。VBAまでやる方が意外です。 これでは意味がわかりません。行と列を取り違えているのでは。 金額列のすぐ右の列に2列挿入では。 挿入されると左から第2番目の金額の位置がずれてコーディングしにくくなります。 右列から、列挿入をやればどうですか。 Sub test01() c = Range("Z1").End(xlToLeft).Column MsgBox c For i = c To 2 Step -2 Cells(1, i + 1).EntireColumn.Insert Cells(1, i + 1).EntireColumn.Insert Next i End Sub A1:K1が ABC 1月 金額 2月 金額 3月 金額 4月 金額 5月 金額 のようにABCがA列、後は月と金額がペアになっているという前提です。 上記の、Z1はデータ列の最右列よりさらに右の列を指定してください。
お礼
ご回答ありがとうございました。。 まだまだ理解不足でこれから勉強します。 ご回答ありがとうごさいました。
- toshi_2000
- ベストアンサー率30% (306/1002)
#1です。 Range(Cells(objRange.row,objRange.column+1),Cells(objRange.row+2,objRange.column+1)).Insert Shift:=xlDown
お礼
ありがとうございました! なんとかできました。 Range(Cell・・)とうやり方を覚えました! ありがとうございました。
- shanglee
- ベストアンサー率43% (58/134)
「金額行の"隣"に」という表現から察するに、「金額"列"の"隣"に」の意味なのでしょうか。。。 1行目の表示が [1月][金額][(挿入された列)][2月][金額][(挿入された列)][3月][金額][(挿入された列)] という感じにしたいということ? であれば、簡単ですがこんな感じではいけませんか? Sub 列挿入() Range("C1,E1,G1").EntireColumn.Insert End sub 勘違いだったらごめんなさい。 なお「金額」という文字列を検索させる意味がよくわかりませんが・・・
- toshi_2000
- ベストアンサー率30% (306/1002)
「金額セルの隣」とは、左右上下どこでしょうか。
補足
言葉足らずで大変失礼しました。 金額行の、右隣に3行追加、です。 よろしくお願い致します。
お礼
その通りです!! やりたいことは、金額の右となり列に3行追加です。 教えて頂いた通りにできました! 本当にありがとうございました。 きちんと基本から勉強します、