いけず言葉しりとり

マクロ初心者です。

下記のマクロを組みたいのですが、
「Rangeメソッドは失敗しました’Globalオブジェクト」とエラーが出てしまいます。
エラーがでる理由、またその修正方法についてご教示いただけませんでしょうか。。。

実現したい動きは以下で

ファイル#1の指定sheetのF5→AR42までの値をコピー
ファイル#3の同範囲に貼り付け
ファイル#2の指定sheetのF5→AR42までの値をコピー
ファイル#3の同範囲に加算で貼り付け
→上記の動きを38行分繰り返す

で、エラーが出てしまったマクロは以下です。。

Sub マクロ3()
'
' マクロ3 Macro
'
Dim i As Integer
For i = 0 To 37

Range(Cells(6, 5 + i)).Select

Windows("#1.xlsm").Activate
Worksheets("指定のシート名").Select
ActiveSheet.Range(Cells(6, 5 + i), Cells(29, 5 + i)).Select
Application.CutCopyMode = False
Selection.Copy

Windows("#2.xlsm").Activate
ActiveSheet.Paste

Windows("#3.xlsm").Activate
Worksheets("指定のシート名").Select
ActiveSheet.Range(Cells(6, 5 + i), Cells(29, 5 + i)).Select
Application.CutCopyMode = False
Selection.Copy

Windows("#1.xlsm").Activate
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
False, Transpose:=False

Next i
End Sub

A 回答 (3件)

こんにちは



ご質問に対する直接の回答は、すでにNo1様がなさっていますので、回答ではありません。

ざっと見ても、質問文とご提示のコードがまったく合致しているようには見えません。

>ファイル#1の指定sheetのF5→AR42までの値をコピー
これに対してコードの方は
>For i = 0 To 37
>Range(Cells(6, 5 + i), Cells(29, 5 + i)).Select
のようになっているので、結局のところ
E6:AP29( =Range(Cells(6, 5), Cells(29, 42)).Address(0, 0) )の範囲に対して処理を行おうとしています。

>ファイル#1の値をコピー
>ファイル#3に貼り付け
>ファイル#2の値をコピー
>ファイル#3に加算で貼り付け
に対しては、それぞれ
ファイル#1の値をコピー
ファイル#2に貼り付け
ファイル#3の値をコピー
ファイル#1に加算で貼り付け
と異なっている上に、多くの場合貼り付け先のセルを指定していないので、どこに張り付くかは成り行きとなっているようにみうけられます。。

おまけに
>→上記の動きを38行分繰り返す
範囲を「F5→AR42」としていて「38行分繰り返す」の意味がわかりません。
確かにセル範囲の「F5→AR42」は38魚分を含んでいますが、セル範囲を対象に処理を行うなら、「繰り返す」必要は感じられないですね。



というわけで、サッパリわからないけれど、超エスパー的な山勘でこんなことかもしれないと・・・(当たるも八卦)

Sub Sample()
Dim ws1, ws2, ws3
Const target = "F5:AR42"

Set ws1 = Workbook("#1.xlsm").Worksheets("指定のシート名")
Set ws2 = Workbook("#2.xlsm").Worksheets("指定のシート名")
Set ws3 = Workbook("#3.xlsm").Worksheets("指定のシート名")

ws1.Range(target).Copy Destination:=ws3.Range(target)
ws2.Range(target).Copy
ws3.Range(target).PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd
End Sub
    • good
    • 0

No2です。



投稿してから気づきましたがタイポがありました。(すみません)
すぐにわかるとは思いますけれど、一応、訂正しておきます

 誤:Workbook()
 正:Workbooks()
    • good
    • 0

Range(Cells(6, 5 + i)).Select





Cells(6, 5 + i).Select
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A