Excel VBA質問箱 IV

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

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


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

【44057】転記の追加 とし 06/11/2(木) 0:57 質問[未読]
【44061】Re:転記の追加 りん 06/11/2(木) 7:36 発言[未読]
【44078】Re:転記の追加 tosi 06/11/3(金) 0:17 発言[未読]
【44088】Re:転記の追加 りん 06/11/3(金) 13:00 回答[未読]
【44091】Re:転記の追加 tosi 06/11/3(金) 16:28 お礼[未読]

【44057】転記の追加
質問  とし  - 06/11/2(木) 0:57 -

引用なし
パスワード
   またわからなくなりましたおしえてください。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=43403;id=excel
上記にて教えていただいたものですが一部追記しようとしたのですが
うまくいきません教えて下さい。
★★の部分に追記したいのですよろしくお願いします。
>Sub 転記()
>
>  Range("F10:G10").Value = "=Calendar!H5"
   略
>  Range("F28:G28").Value = "=Calendar!H11"
↑ここはF列で10行目から3行ごと
>  Range("E32:F32").Value = "=Calendar!H12"
   略
>  Range("E38:F38").Value = "=Calendar!H18"
↑ここはE列で32行目から毎行
>End Sub

以上の条件を踏まえて分岐。

Sub 転記()
  Dim II As Integer, RR As Long, CC As Long
  For II = 1 To 14
   Select Case II
     Case 1 To 7: RR = 7 + II * 3: CC = 6 '上から7つはF列3つおき
★★ここにJ列に3つおきを追加したい。
     Case Else:  RR = 24 + II:   CC = 5 '残りはE列
   End Select
   '
   Worksheets("sheet1").Cells(RR, CC).Resize(1, 2) _
        .Value = "=Calendar!H" & (4 + II)
★★.Value = "=Calendar!I"に変更する。
  Next
End Sub

ただしF10:G10が結合セルを意味するなら、.Resize(1, 2)の部分は不要です。

【44061】Re:転記の追加
発言  りん E-MAIL  - 06/11/2(木) 7:36 -

引用なし
パスワード
   とし さん、おはようございます。

>Sub 転記()
>  Dim II As Integer, RR As Long, CC As Long
>  For II = 1 To 14
>   Select Case II
>     Case 1 To 7: RR = 7 + II * 3: CC = 6 '上から7つはF列3つおき
>★★ここにJ列に3つおきを追加したい。
>     Case Else:  RR = 24 + II:   CC = 5 '残りはE列
>   End Select
>   '
>   Worksheets("sheet1").Cells(RR, CC).Resize(1, 2) _
>        .Value = "=Calendar!H" & (4 + II)
>★★.Value = "=Calendar!I"に変更する。
>  Next
>End Sub

分岐(転記)する回数は14回のままですか?
また、参照先は、全部Iに変更するのですか?
何行目から何行目まで○列に転記する等、詳細を書かないと答えようがないと思います。

【44078】Re:転記の追加
発言  tosi  - 06/11/3(金) 0:17 -

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

>>Sub 転記()
>>  Dim II As Integer, RR As Long, CC As Long
>>  For II = 1 To 14
>>   Select Case II
>>     Case 1 To 7: RR = 7 + II * 3: CC = 6 '上から7つはF列3つおき
>>★★ここにJ列に3つおきを追加したい。
>>     Case Else:  RR = 24 + II:   CC = 5 '残りはE列
>>   End Select
>>   '
>>   Worksheets("sheet1").Cells(RR, CC).Resize(1, 2) _
>>        .Value = "=Calendar!H" & (4 + II)
>>★★.Value = "=Calendar!I"に変更する。
>>  Next
>>End Sub
>
>分岐(転記)する回数は14回のままですか?
>また、参照先は、全部Iに変更するのですか?
>何行目から何行目まで○列に転記する等、詳細を書かないと答えようがないと思います。

りんさん返事ありがとうございます。
>分岐(転記)する回数は14回のままですか?
7回でいいのですが
>また、参照先は、全部Iに変更するのですか?
前回のHはそのままで今回のみI列としたいのですが
転記先はJ10.13.16.19.22.25.28です。
下記のようにコード修正してみたのですが
いかがでしょうか

Sub 転記()
  Dim II As Integer, RR As Long, CC As Long, SS As Long
  For II = 1 To 14
   Select Case II
     Case 1 To 7: RR = 7 + II * 3: CC = 6   '上から7つはF列3つおき

     Case Else:  RR = 24 + II:   CC = 4 '残りはD列
   End Select
   Worksheets("sheet1").Cells(RR, CC) _
        .Value = "=Calendar!H" & (4 + II)
   Next
   For III = 1 To 7
   Select Case III
     Case 1 To 7: SS = 7 + III * 3: CC = 10
   End Select     '

   Worksheets("sheet1").Cells(SS, CC) _
        .Value = "=Calendar!I" & (4 + III)
  Next

End Sub

【44088】Re:転記の追加
回答  りん E-MAIL  - 06/11/3(金) 13:00 -

引用なし
パスワード
   tosi さん、こんにちわ。

>前回のHはそのままで今回のみI列としたいのですが
>転記先はJ10.13.16.19.22.25.28です。

実行結果をみたところ、Hの転記に加えて、Iも転記するということでいいのですね。

条件が分かれないときは分岐を入れる必要はないですよ。
>   Select Case III
>     Case 1 To 7: SS = 7 + III * 3: CC = 10
>   End Select     '

今回の場合はループを纏められるので。
Sub 転記()
  Dim II As Integer, RR As Long, CC As Long
  For II = 1 To 14
   Select Case II
     Case 1 To 7: RR = 7 + II * 3: CC = 6 '上から7つはF列とJ列で3つおき
     Case Else:  RR = 24 + II:  CC = 4 '残りはD列
   End Select
   Worksheets("sheet1").Cells(RR, CC) _
       .Value = "=Calendar!H" & (4 + II)
   '7まではJ列にも転記
   If II < 8 Then
     Worksheets("sheet1").Cells(RR, 10) _
       .Value = "=Calendar!I" & (4 + II)
   End If
  Next
End Sub

こんな感じです。

【44091】Re:転記の追加
お礼  tosi  - 06/11/3(金) 16:28 -

引用なし
パスワード
   ▼りん さん:
ありがとうございました。
分岐は不要と言うことですね
わかりました。

>
>>前回のHはそのままで今回のみI列としたいのですが
>>転記先はJ10.13.16.19.22.25.28です。
>
>実行結果をみたところ、Hの転記に加えて、Iも転記するということでいいのですね。
>
>条件が分かれないときは分岐を入れる必要はないですよ。
>>   Select Case III
>>     Case 1 To 7: SS = 7 + III * 3: CC = 10
>>   End Select     '
>
>今回の場合はループを纏められるので。
>Sub 転記()
>  Dim II As Integer, RR As Long, CC As Long
>  For II = 1 To 14
>   Select Case II
>     Case 1 To 7: RR = 7 + II * 3: CC = 6 '上から7つはF列とJ列で3つおき
>     Case Else:  RR = 24 + II:  CC = 4 '残りはD列
>   End Select
>   Worksheets("sheet1").Cells(RR, CC) _
>       .Value = "=Calendar!H" & (4 + II)
>   '7まではJ列にも転記
>   If II < 8 Then
>     Worksheets("sheet1").Cells(RR, 10) _
>       .Value = "=Calendar!I" & (4 + II)
>   End If
>  Next
>End Sub
>
>こんな感じです。

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