- ベストアンサー
Excelでマクロを繰り返したい
- Excelでマクロを繰り返す方法について教えてください。
- 手作業で数字を変えてマクロを繰り返す際にエラーが発生してしまいます。解決方法を教えてください。
- マクロを記録した後、特定の条件で繰り返し実行する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
検索条件のループをはずして、貼り付け位置の設定を変更しました。 Sub sample() Dim RngOrg As Range Dim RngNew As Range Dim m As Integer Dim n As Integer Set RngOrg = ThisWorkbook.Worksheets("Sheet1").Range("A3:A302") 'コピーする範囲 n = 5 '検索条件の数字 Set RngNew = ThisWorkbook.Worksheets("Sheet2").Range("A3") '最初 For m = 4 To 35 'フィールドの範囲 RngOrg.AutoFilter Field:=m, Criteria1:="=" & n & "*", Operator:=xlAnd, _ Criteria2:="<>" & n & "@*" RngOrg.Copy RngNew.PasteSpecial Paste:=xlPasteValues Set RngNew = RngNew.Offset(, 1) RngOrg.Worksheet.AutoFilterMode = False 'オートフィルタを解除 Next m End Sub
その他の回答 (1)
- cafe_au_lait
- ベストアンサー率51% (143/276)
希望する動作を把握できていないかもしれませんが・・・。 Sub sample() Dim RngOrg As Range Dim RngNew As Range Dim m As Integer Dim n As Integer Set RngOrg = ThisWorkbook.Worksheets("Sheet1").Range("A3:A302") 'コピーする範囲 For m = 4 To 35 'フィールドの範囲 For n = 5 To 8 '検索条件の数字 RngOrg.AutoFilter Field:=m, Criteria1:="=" & n & "*", Operator:=xlAnd, _ Criteria2:="<>" & n & "@*" 'ペーストのルールがいまいち把握できていませんが・・・。 'とりあえず、A3,B3,A103,B103,A203,B203,A303,B303・・・と続くものとしました。 If m = 4 And n = 5 Then '最初 Set RngNew = ThisWorkbook.Worksheets("Sheet2").Range("A3") ElseIf n Mod 2 Then 'nが奇数のとき Set RngNew = RngNew.Offset(100, -1) Else 'nが偶数のとき Set RngNew = RngNew.Offset(, 1) End If RngOrg.Copy RngNew.PasteSpecial Paste:=xlPasteValues Next n RngOrg.Worksheet.AutoFilterMode = False 'オートフィルタを解除 Next m End Sub
補足
すいません 質問の仕方が悪かったようです。 条件を少し変えてみます。 - 検索する数字をひとつにする - フィールドは4から35まで - コピーする範囲はそのまま - ペーストするセルはA3,B3,C3・・・・・とする お手数ですがよろしくお願いします。
お礼
どうもありがとうございました。 わかりやすく書いていただいて感謝しております。 今回の回答を参考にいろいろ手を加えて、幅を広げていきたいと思います。大変お世話になりました、また機会がありましたらよろしくお願い致します。