[[20150126204247]] 『条件毎にコピー貼り付け』(ななママ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件毎にコピー貼り付け』(ななママ)

セルC3に入力される数字(整数)によってコピーペーストの処理方法を変えたいと考えています。
セルC3が21〜30の時
53行から104行をコピーしてセルA105を選択して貼り付け
セルC3が31〜40の時
53行から104行をコピーしてセルA105を選択して貼り付け、
セルA157を選択して貼り付け
セルC3が41〜50の時
53行から104行をコピーしてセルA105を選択して貼り付け、
セルA157を選択して貼り付け、
セルA209を選択して貼り付け
こんな感じでセルC3を10ずつ200まで区切って処理したいのです。

下記のように途中までマクロを作成してみましたがうまく動きません。
セルC3の値が21以上なら53行から104行をコピーしてセルA105に貼り付けにしかなりません。どう改善すればよいでしょうか?お願いします。

 Sub コピペ()
    If 21 <= Range("C3") <= 30 Then
        Rows("53:104").Copy
        Range("A105").PasteSpecial (xlPasteAll)
    ElseIf 31 <= Range("C3") <= 40 Then
        Rows("53:104").Copy
        Range("A105,A157").Select
        Selection.PasteSpecial Paste:=xlPasteAll
    ElseIf 41 <= Range("C3") <= 50 Then
        Rows("53:104").Copy
        Range("A105,A157,A209").Select
        Selection.PasteSpecial Paste:=xlPasteAll
    End If
 End Sub

< 使用 Excel:Excel2010、使用 OS:Windows7 >


    If 21 <= Range("C3") <= 30 Then
 という書き方は出来ません。
    If 21 <= Range("C3").Value And Range("C3").Value <= 30 Then
 というように分けて書いてください。
 他の条件記述も同様です。

 コピーの方もできないと思ったら、あらできた。 
 ということで取り下げ。
(Mook) 2015/01/26(月) 21:09

 一応のサンプルです。
 If を重ねてや Select Case でも出来ますが、今回は For 文で。

 Sub Sample()
    Dim num As Long
    num = Range("C3").Value
    If num <= 20 Or num > 200 Then Exit Sub
    For r = 2 To Int((num - 1) / 10)
        Rows("53:104").Copy
        Range("A105").Offset((r - 2) * 52).PasteSpecial Paste:=xlPasteAll
    Next
 End Sub

(Mook) 2015/01/26(月) 21:42


 処理としては コピー元.Copy と コピー先.PasteSpecial xlPasteAll でもいいのですが
 xlPasteAll であれば、copyメソッド一本で 
 コピー元.Copy コピー先 
 として記述することができます。

 Sub Test1()
    Rows("53:104").Copy Range("A105")
 End Sub

 また、条件分岐、このケースであれば、Mookさんもいわれるように、Select Case もわかりやすいかもしれません。

 Sub Test2()
    Select Case Range("C3").Value
        Case 21 To 30
            'その条件の時の処理
        Case 31 To 40
            'その条件の時の処理
        Case 41 To 50
            'その条件の時の処理
    End Select

 End Sub

(β) 2015/01/26(月) 21:43


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.