• ベストアンサー

指定した行数を挿入する マクロ

添付をごらんください。 H列に関数をいれたのですが、その数字はその下にその数値だけ行を挿入する、ということを示しました。その行数を挿入することによって、連番になるように調整、番号の最後を18になるように調整、したいわけです。 H列>0の数字があれば下にその行数だけ挿入する、というマクロを教えてください。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (780/1630)
回答No.3

すみません。間違ったものを上げてしまいました。 私のパソコンでやってみたら、エラーが出ました。 以下のプログラムでお願いします。 ' Option Explicit ' Sub Macro1() Dim iy As Long Dim H As Integer ' For iy = Cells(Rows.Count, "H").End(xlUp).Row To 1 Step -1 H = 0 On Error Resume Next H = Cells(iy, "H") On Error GoTo 0 ' If H > 0 Then Rows(iy + 1 & ":" & iy + H).Insert End If Next iy End Sub

honeybeans
質問者

お礼

できました!!! ありがとうございました!

その他の回答 (3)

  • subaru130
  • ベストアンサー率20% (66/326)
回答No.4

これでやりたいことは出来ると思いますが行3~17に対応した物です。 以降の行に対応させるには若干改良が必要となります。 単純にセル挿入のみとなります 1~18の番号の振り直しには対応しています 一応テストはしてあります ------------以下マクロの内容--------------- Sub Macro1() '-------変数の宣言--------- Dim con As Integer Dim con1 As Integer Dim con2 As Integer Dim con3 As Integer '-------本体--------- con2 = 3 For con = 1 To 18 ---------単純に18回繰り返し con1 = Cells(con2, 8) ------Cellsを使ってセルの内容をcon1に代入 If con1 <> 0 Then ------con1が0以外だったら以下の処理をしなさい For con3 = 1 To con1 ----con3をcon1回繰り返し Range(Cells(con2 + con3, 1), Cells(con2 + con3, 8)).Select -------Cellsを使ってセル範囲指定 Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ---------範囲指定された場所にセル挿入 Next End If con2 = con2 + 1 Next '--------リナンバー-----------(1~18を振り直します) Range("A3") = 1   Range("A3:A4").Select   Selection.AutoFill Destination:=Range("A3:A21"), Type:=xlFillDefault Range("A3:A21").Select End Sub

honeybeans
質問者

補足

私のやり方が悪いのか、エラーが出ました。

  • SI299792
  • ベストアンサー率47% (780/1630)
回答No.2

' Option Explicit ' Sub Macro1() '   Dim iy As Long   Dim H As Variant '   For iy = Cells(Rows.Count, "H").End(xlUp).Row To 1 Step -1     H = Cells(iy, "H") '     If IsErr(H) > 0 Then     ElseIf H > 0 Then       Rows(iy + 1 & ":" & iy + H).Insert     End If   Next iy End Sub

honeybeans
質問者

補足

Sub または Function が定義されていません、とエラーが出ます。ご確認いただけますでしょうか?

  • skp026
  • ベストアンサー率45% (1010/2238)
回答No.1

以下はExcel VBAで複数の行を挿入するサンプルのようです。 http://www.relief.jp/docs/excel-vba-insert-rows.html 参考にならなかったらごめんなさい。

関連するQ&A

専門家に質問してみよう