Excel VBA質問箱 IV

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

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


7613 / 13644 ツリー ←次へ | 前へ→

【37537】1行目から6行目の作業を1つに…。 Cuore=Tane 06/5/10(水) 21:58 質問[未読]
【37539】Re:1行目から6行目の作業を1つに…。 ゆみ 06/5/10(水) 22:50 発言[未読]
【37544】Re:1行目から6行目の作業を1つに…。 とまと 06/5/11(木) 8:15 回答[未読]
【37721】Re:1行目から6行目の作業を1つに…。 Cuore=Tane 06/5/16(火) 19:23 お礼[未読]
【37949】Re:1行目から6行目の作業を1つに…。 Cuore=Tane 06/5/24(水) 6:13 お礼[未読]

【37537】1行目から6行目の作業を1つに…。
質問  Cuore=Tane  - 06/5/10(水) 21:58 -

引用なし
パスワード
   これを何とか1つにまとめられませんか?

Dimにはa,b,c,dを指定(形はすべてLong)

'1行目
  For a = 9 To 28
    If a > Worksheets.Count Then Exit For
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A6:E10").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D3").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b
      
'2行目
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A12:E16").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D38").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b
      
'3行目
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A18:E22").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D73").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b

'4行目
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A24:E28").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D108").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b

'5行目
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A30:E34").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D143").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b

'6行目
      For b = 0 To 34 Step 5
        Sheets(a).Select
        Range("A36:E40").Offset(, b).Select
        Selection.Copy
        Sheets("日程表データベース").Select
        Range("D178").Offset(, a * 10 - 90).Select
        Selection.Offset(b).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
          :=False, Transpose:=False
      Next b
        Application.CutCopyMode = False
        Sheets("日程表データベース").Select
        Range("A3").Select
  Next a

同じような作業なのですが、範囲が若干違うので、これを何とか1つにまとめられる方法がわかる方がいましたら、お願いいたします。m(_ _)m

【37539】Re:1行目から6行目の作業を1つに…。
発言  ゆみ  - 06/5/10(水) 22:50 -

引用なし
パスワード
   ▼Cuore=Tane さん:
>これを何とか1つにまとめられませんか?
>
私だったら、コードを載せて聞くんじゃなくて、○○をしたいのですがどのようなコードにすればいいでしょうか?現在はこのようなコードにしています。という聞き方にします。
コードを載せて、何をしたいのかを書かないのでは、回答者はコードを読む必要があります。
そのコードを読んだ上で、質問者が何をしているのかを考える必要があります。
ちょっと回答者に対して不親切な質問の仕方だと感じました。

申し訳ありませんが、私はコードの内容を見ていません。
具体的には分からないのですが、現在のコードで動いているんですよね?
なぜまとめたいのかを具体的に書いたほうがいいような気もします。
たぶん見た目の問題だとは思いますが。
それと、短くまとめられるのであれば、それも自分自身のスキルアップに繋がるかもしれませんからね。

回答でなくて申し訳ありません。気分を害されたらスルーしてください。

【37544】Re:1行目から6行目の作業を1つに…。
回答  とまと  - 06/5/11(木) 8:15 -

引用なし
パスワード
   ちょっと暇だったのでまとめてみました。
テストとかしてないので動くかわかりません。
参考にしてください。

Sub test()

  For a = 9 To 28
   If a > Worksheets.Count Then Exit For
   
     For b = 0 To 34 Step 5
       For m = 0 To 5
        Sheets(a).Range("A" & m * 6 + 6 & ":E" & m * 6 + 10).Offset(, b).Copy _
        Sheets("日程表データベース").Range("D" & m * 35 + 3).Offset(, a * 10 - 90).Offset(b)
       Next
     Next b
     
    Application.CutCopyMode = False
    Sheets("日程表データベース").Select
    Range("A3").Select
  Next a

End Sub

【37721】Re:1行目から6行目の作業を1つに…。
お礼  Cuore=Tane  - 06/5/16(火) 19:23 -

引用なし
パスワード
   ▼とまと さん:
>ちょっと暇だったのでまとめてみました。
>テストとかしてないので動くかわかりません。
>参考にしてください。
>
>Sub test()
>
>  For a = 9 To 28
>   If a > Worksheets.Count Then Exit For
>   
>     For b = 0 To 34 Step 5
>       For m = 0 To 5
>        Sheets(a).Range("A" & m * 6 + 6 & ":E" & m * 6 + 10).Offset(, b).Copy _
>        Sheets("日程表データベース").Range("D" & m * 35 + 3).Offset(, a * 10 - 90).Offset(b)
>       Next
>     Next b
>     
>    Application.CutCopyMode = False
>    Sheets("日程表データベース").Select
>    Range("A3").Select
>  Next a
>
>End Sub

お返事が遅くなり、申し訳ありません。
上記ので動作確認してみます。
ありがとうございました。

動いた場合、動かなかった場合に関わらず、その結果に関してはもう一度お返事いたします。

【37949】Re:1行目から6行目の作業を1つに…。
お礼  Cuore=Tane  - 06/5/24(水) 6:13 -

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

確認してちゃんと動きました。
本当にありがとうございました。

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