電子書籍の厳選無料作品が豊富!

教えて下さい。vba初心者です。

A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄

1️⃣一番最後に入力した行をすぐ下にコピーしたい。(ここでは7行目…入力して行くと行は増えます。)
2️⃣指定回数はE列。

この列ではE列が3回になりますので、
コピーしたい範囲はA〜G列を、すぐ下の8行〜9行までの2回分コピーしたいです。

完成希望例
A B C D E F G H
7 522 加藤 沖縄 みかん 縄 1 1/5 空欄
8 123 吉田 愛媛 りんご 水 3 2/10 空欄
9 123 吉田 愛媛 りんご 水 3 2/10 空欄
10 123 吉田 愛媛 りんご 水 3 2/10 空欄

にしたいです。

質問者からの補足コメント

  • 2️⃣の訂正です。
    指定回数はF列です。

    1番上のABCはエクセルの列番号
    左端の7と8はエクセルの行番号です。
    初めて質問した為、見にくくなってしまい、すみません。

      補足日時:2017/03/13 01:57
  • 11行目からも同様に異なる新たなデータを入力後、
    F列の回数分コピーしたいです。

    データをどんどん追加して行きたいのです。

      補足日時:2017/03/13 23:25
  • 画像を補足させて頂きました。
    ご指導お願いします。

    「エクセルvba 一つ上の行を指定した回数」の補足画像3
      補足日時:2017/03/14 00:06
  • yokomaya様
    画像です。

    「エクセルvba 一つ上の行を指定した回数」の補足画像4
      補足日時:2017/03/15 00:24
  • ymkomayaさま

    「エクセルvba 一つ上の行を指定した回数」の補足画像5
      補足日時:2017/03/15 00:25
  • ymkomayaさま

    「エクセルvba 一つ上の行を指定した回数」の補足画像6
      補足日時:2017/03/15 00:26
  • ymkomayaさま
    こちらがエラーの画像です。

    「エクセルvba 一つ上の行を指定した回数」の補足画像7
      補足日時:2017/03/15 00:28
  • ymkomayaさま

    先程のR列の画像です。
    17列〜21列にしたいです。
    ご不便お掛けしますが、ご教授お願いします。

    「エクセルvba 一つ上の行を指定した回数」の補足画像8
      補足日時:2017/03/15 23:02
  • 出来ました!うれしいです(喜)
    添付方法を勉強しておりました。
    今回教えていただいたプログラムをコピーして、貼り付けてみました。
    TABキーでインデントを何度か入れたりしながら、作動するように頑張ってるのですが、なかなか赤文字エラーが取れないです。
    どこでTABを入れたらよいのか教えていただけますでしょうか?

    あと2回で補足ができなくなってしまうと…yokomayaさまに繋がらなくなってしまうのが不安です。
    こちらの他にあと2つお聞きしたい事が残っていまして…
    ①管理表のA1部分に検索をかけたいです。A7以降に入力した番号をA1に入力すると(例 A1に123と入力後、A7に登録した123と合致するデータを全て呼び出したいです。
    ②前回教授頂いた条件検索の横に番号A列とF列の2個の条件に一致するデータを取り出す関数も教えてください。(管理表F列でコピー回数指定の後、上書き直してます。)

    「エクセルvba 一つ上の行を指定した回数」の補足画像9
    No.18の回答に寄せられた補足コメントです。 補足日時:2017/03/16 15:49
  • 最後の補足になってしまいました。
    今まで本当にお世話になり、感謝申し上げます。
    これからもよろしくお願いします<m(__)m>

    「エクセルvba 一つ上の行を指定した回数」の補足画像10
      補足日時:2017/03/16 21:43

A 回答 (24件中21~24件)

No.3です。



書き忘れましたが、
6行目で最終列を判断していますので、
6行目が項目行になっている前提のコードです。

※ 項目行がない場合は、コードの手直しは面倒なので・・・

lastCol = Cells(6, Columns.Count).End(xlToLeft).Column
の部分を

lastCol = 8 (H列までの場合)
のようにしてください。m(_ _)m
    • good
    • 0

こんにちは!



一例です。

Sub Sample1()
Dim i As Long, cnt As Long, lastCol As Long
lastCol = Cells(6, Columns.Count).End(xlToLeft).Column
For i = Cells(Rows.Count, "A").End(xlUp).Row To 7 Step -1
If Cells(i, "E") > 1 Then
Do Until cnt = Cells(i, "E") - 1
cnt = cnt + 1
Rows(i + 1).Insert
Cells(i, "A").Resize(, lastCol).Copy Cells(i + 1, "A")
Loop
cnt = 0
End If
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
さっそく試してみました。
ところがエラーになってしまったようで、補足させて下さい。
実行時エラー'13'
型が一致しません。
と出てしまいました。

Do Until cnt = cells(i,”e”) - 1
の部分が黄色く光っていて、実行出来ないのです。
再度ご指導お願い致します。

お礼日時:2017/03/13 23:20

教えてくださいとありますが、何を教えるのでしょうか? 「こうゆうことがしたいのでよろしく」と言っているように聞こえます。

こうゆうのを「丸投げ」言います。ご自分でどこまで調べられたのでしょうか? 調べられた上で分からないことを具体的に質問した方がよろしいかと。
    • good
    • 0
この回答へのお礼

すみませんでした。
なるべくシンプルに質問した方が良いかと思いまして…

補足させて下さい。
8行目を2回コピーした後、
新たなデータもどんどん追加したいのです。
追加したデータもFの回数分コピーして行きたいのです。

お礼日時:2017/03/13 22:54

これだけならこれでも出来るけど


Range("A8:H8").Copy Range("A9").Resize(Range("F8") - 1, 1)

なぜ7行目から?

行増えるんだよね。

7Fが1だから単純にそうなるけどもし7Fが3だったら
2行挿入しなきゃいけないけど、そこはどうするの?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
迅速な対応、心より感謝しています。
わかりにくい質問ですみませんでした。
補足させて下さい。
8行目を2回コピーした後、
新たなデータもどんどん追加したいのです。
追加したデータもFの回数分コピーして行きたいのです。

お礼日時:2017/03/13 22:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています