Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13359 / 13645 ツリー ←次へ | 前へ→

【5734】挿入を繰り返したいのですが mumumu 03/5/29(木) 9:38 質問
【5738】Re:挿入を繰り返したいのですが つん 03/5/29(木) 11:29 回答
【5739】Re:挿入を繰り返したいのですが mumumu 03/5/29(木) 11:39 質問
【5743】ありゃ、ごめん つん 03/5/29(木) 12:21 回答
【5748】Re:ありゃ、ごめん mumumu 03/5/29(木) 13:22 お礼
【5750】アバウトすぎ・・・ つん 03/5/29(木) 13:34 発言
【5755】付け足して質問なんですが>_< mumumu 03/5/29(木) 15:03 質問
【5759】Re:付け足して質問なんですが>_< つん 03/5/29(木) 15:35 回答
【5762】Re:付け足して質問なんですが>_< mumumu 03/5/29(木) 16:01 お礼

【5734】挿入を繰り返したいのですが
質問  mumumu  - 03/5/29(木) 9:38 -

引用なし
パスワード
   また、お世話になります。

Sheet2のA列からE列に3行目から下に向かってデータが並んでいます。
そこへ5行置きにSheet1のA1:E2をコピー挿入するという作業を繰り返したい
のですが、教えてもらえないでしょうか。

自動記録で書いてみたら下のようになりました。

Sub Test1()

  Sheets("Sheet1").Select
  Range("A1:E2").Select
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A8").Select
  Selection.Insert Shift:=xlDown
End Sub

これは、一度だけ挿入したものです。
次に挿入する位置はA13、A18、A23・・・・という感じです。
挿入する場所が空白だった場合終了にしたいのです。

どうか、よろしくお願いいたします。

【5738】Re:挿入を繰り返したいのですが
回答  つん E-MAIL  - 03/5/29(木) 11:29 -

引用なし
パスワード
   mumumu さん:

>Sheet2のA列からE列に3行目から下に向かってデータが並んでいます。
>そこへ5行置きにSheet1のA1:E2をコピー挿入するという作業を繰り返したい
>のですが、教えてもらえないでしょうか。

こんな感じではどうでしょうか?

Sub test()

  Dim lngRow As Long
  Dim r As Range
  
  lngRow = 8
  
  With Worksheets("Sheet1")
    Set r = .Range("a1:e2")
    While .Cells(lngRow, 1).Value <> ""
      .Range(.Cells(lngRow, 1), .Cells(lngRow + 1, 5)).Insert Shift:=xlDown
      r.Copy Destination:=.Cells(lngRow, 1)
      lngRow = lngRow + 7
    Wend
  End With
  
  Set r = Nothing
  
End Sub

やってみたら、とりあえず出来てるような・・・(いい加減な(^^;)
良かったら一度試してくださいませ

【5739】Re:挿入を繰り返したいのですが
質問  mumumu  - 03/5/29(木) 11:39 -

引用なし
パスワード
   ▼つん さん:

回答ありがとうございます。
試してみました。
えっと、やりたいコピー挿入はできているのですが
残念なことに、コピー先がSheet1になってしまいました。

コピー元はSheet1なのですがコピー先はSheet2なんです。
どこかにSheets("Sheet2").Selectを付け足せばいいんでしょうか?

情けないことに、場所がわかりません(>_<。)
もう少し、教えていただけないでしょうか?

よろしくお願いします。

【5743】ありゃ、ごめん
回答  つん E-MAIL  - 03/5/29(木) 12:21 -

引用なし
パスワード
   どもども

質問を読み飛ばしてました。すみません
これでOKかな

Sub test()

  Dim lngRow As Long
  Dim r As Range
  
  lngRow = 8
  Set r = Worksheets("Sheet1").Range("a1:e2")
  With Worksheets("Sheet2")
    While .Cells(lngRow, 1).Value <> ""
      .Range(.Cells(lngRow, 1), .Cells(lngRow + 1, 5)).Insert Shift:=xlDown
      r.Copy Destination:=.Cells(lngRow, 1)
      lngRow = lngRow + 7
    Wend
  End With
  
  Set r = Nothing
  
End Sub


With Worksheets("Sheet2")
  ・・・・
End With

というふうにすると、With〜Endの間はの処理は、Sheet2に対して行われます。
前のは、Sheet1にしてて、コピー元の範囲を変数に入れるのも、With〜End Withの間にいれてたから、コピー元もコピー先も同じ、Sheet1になってました。

【5748】Re:ありゃ、ごめん
お礼  mumumu  - 03/5/29(木) 13:22 -

引用なし
パスワード
   ▼つん さん:

助かりました〜(*^_^*)
ちゃんと、できました。また、解説もしていただき、勉強になりました。
本当にありがとうございました。(感謝!)

【5750】アバウトすぎ・・・
発言  つん E-MAIL  - 03/5/29(木) 13:34 -

引用なし
パスワード
   mumumu さん

上手くいってよかったです。
Withステートメントについては、私の説明ではちょっとアバウトすぎやね。
一度ヘルプを読んでみてちょ。

ではでは〜

【5755】付け足して質問なんですが>_<
質問  mumumu  - 03/5/29(木) 15:03 -

引用なし
パスワード
   ▼つん さん:

>Withステートメントについては、私の説明ではちょっとアバウトすぎやね。
>一度ヘルプを読んでみてちょ。

えへへ。ずっと前にもヘルプが参考になるって、つんさんに教えて
いただいたんですよね。^^;
ついつい、こちらに先にお世話になってしまって。。。
勉強不足ですみません。><
でも、ありがとうございます。

と、いいながらまたすぐで恐縮ですが・・・
先ほどのコピー挿入に付け足しての質問をお願いしてもいいでしょうか?

さっきの手順でコピー挿入の作業が終わったものをB列からE列までの範囲で
3行目以降データがあるところまでを選択して印刷させるということは
可能でしょうか?

あほな質問ばかりで、ご迷惑とは思いますがよろしくお願いします。

【5759】Re:付け足して質問なんですが>_<
回答  つん E-MAIL  - 03/5/29(木) 15:35 -

引用なし
パスワード
   どもども

>えへへ。ずっと前にもヘルプが参考になるって、つんさんに教えて
>いただいたんですよね。^^;

えー?そやったっけ?
すっかり忘れてるにゃ(^^;

>さっきの手順でコピー挿入の作業が終わったものをB列からE列までの範囲で
>3行目以降データがあるところまでを選択して印刷させるということは
>可能でしょうか?

Sub test()

  Dim lngLastRow As Long
  
  With Worksheets("Sheet1")
    lngLastRow = .Range("b65536").End(xlUp).Row
    .Range(.Cells(3, 2), .Cells(lngLastRow, 5)).PrintOut
  End With
    
End Sub

こんな感じかなあ?(Sheet1でよかったっけ?)

【5762】Re:付け足して質問なんですが>_<
お礼  mumumu  - 03/5/29(木) 16:01 -

引用なし
パスワード
   ▼つん さん:
>えー?そやったっけ?
>すっかり忘れてるにゃ(^^;

ずいぶん前の話なんです^^

>こんな感じかなあ?(Sheet1でよかったっけ?)

はい!
うまく行きました。ありがとうございました!!
(Sheet2でしたけど^^;)

13359 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free