• ベストアンサー

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行追加するにはどうしたらいいでしょうか・・。どうぞ宜しくお願いします!

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 私も、#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

acochaco
質問者

お礼

その通りです!! やりたいことは、金額の右となり列に3行追加です。 教えて頂いた通りにできました! 本当にありがとうございました。 きちんと基本から勉強します、

その他の回答 (4)

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

>言葉足らずで大変失礼しました。 >金額行の、右隣に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はデータ列の最右列よりさらに右の列を指定してください。

acochaco
質問者

お礼

ご回答ありがとうございました。。 まだまだ理解不足でこれから勉強します。 ご回答ありがとうごさいました。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.3

#1です。 Range(Cells(objRange.row,objRange.column+1),Cells(objRange.row+2,objRange.column+1)).Insert Shift:=xlDown

acochaco
質問者

お礼

ありがとうございました! なんとかできました。 Range(Cell・・)とうやり方を覚えました! ありがとうございました。

  • shanglee
  • ベストアンサー率43% (58/134)
回答No.2

「金額行の"隣"に」という表現から察するに、「金額"列"の"隣"に」の意味なのでしょうか。。。 1行目の表示が [1月][金額][(挿入された列)][2月][金額][(挿入された列)][3月][金額][(挿入された列)] という感じにしたいということ? であれば、簡単ですがこんな感じではいけませんか? Sub 列挿入()    Range("C1,E1,G1").EntireColumn.Insert End sub 勘違いだったらごめんなさい。 なお「金額」という文字列を検索させる意味がよくわかりませんが・・・

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

「金額セルの隣」とは、左右上下どこでしょうか。

acochaco
質問者

補足

言葉足らずで大変失礼しました。 金額行の、右隣に3行追加、です。 よろしくお願い致します。