プロが教える店舗&オフィスのセキュリティ対策術

ブック間で、変数によるコピー貼付けをしたいのです

Workbooks(MyFName).Worksheets("部品表").Cells(j * 17 - 11, 2).Copy_
Workbooks(MyFName2).Worksheets("PartsList").Cells(k * 39 - 37, 2)
と書いて見ましたが、デバックしてしまいました。

.Activate の場合も
cellsは使えませんか?

どうぞ教えてください

A 回答 (4件)

CellsもRangeオブジェクトのはずですので、ご質問の指定方法で問題ないはずです。

テストして見ましたが、実行できています。(Copyと‗の間はスペースありますよね?)

考えられるのは、j、kの値が悪く(例えば負の値)てセルの指定ができない場合には、ご質問のように1004のエラーが出ます。
ウォッチ式などで、その行の各変数の値やオブジェクトの内容を確認してみてください。

結合がエラーの原因になる場合もありますが(範囲をはずれてしまうとか)、手作業でもコピー、ペーストできる状況であればエラーにはならないと思います。(セル指定が1セルになっているので)
(↑で値を確認できれば、これも確認できますね)
    • good
    • 1
この回答へのお礼

変数の誤りでした
ありがとうございました

お礼日時:2008/12/03 17:52

ただ、RANGEで括るだけでは動きませんので



Dim ws As Worksheet
Dim ws2 As Worksheet

Set ws = Workbooks(MyFName).Worksheets("部品表")
Set ws2 = Workbooks(MyFName2).Worksheets("PartsList")

ws.Range(ws.Cells(j * 17 - 11, 2), ws.Cells(j * 17 - 11, 2)).Copy _
ws2.Range(ws2.Cells(k * 39 - 37, 2), ws2.Cells(k * 39 - 37, 2))

Set ws = Nothing
Set ws2 = Nothing

又は、
Workbooks(MyFName).Worksheets("部品表").Range("B" & j * 17 - 11).Copy _
Workbooks(MyFName2).Worksheets("PartsList").Range("B" & k * 39 - 37)
でも動きます。
こちらの方が余り変更がなくて済みます。

この回答への補足

Workbooks(MyFName).Worksheets("部品表").Range("B" & j * 17 - 11).Copy _
Workbooks(MyFName2).Worksheets("PartsList").Range("B" & k * 39 - 37)

をやってみましたが、やはりだめでした…。
変数のせいなのでしょうか。
変数を見直してみます

補足日時:2008/12/03 17:05
    • good
    • 0
この回答へのお礼

変数を確認したところ、エラー箇所がわかりました

上記のやりかた、大変勉強になりました
ありがとうございました

お礼日時:2008/12/03 17:54

>貼付け元のセルが結合されていて、貼付け先は結合がないのですが



エラーメッセージから判断すると上記のことは原因外です。
但し、逆ならエラーになります。


で、考えられることは、変数KJの値で、次の2つの場合。

(1)変数K、Jのどちらかが、0、又は両方とも 0 の場合

(2)Cells(j * 17 - 11,2)
   Cells(k * 39 - 37,2)
このJ*17-11、K*39-37が
シートの最大行(例えばxl2000~2003では、65536)を超える
ような、K,Jの値になってる場合。

このどちらかでしょう。
以上。
    • good
    • 0
この回答へのお礼

ああ…、
(1)変数K、Jのどちらかが、0、又は両方とも 0 の場合
に当てはまります

お礼日時:2008/12/03 17:02

Range(Cells(j * 17 - 11, 2))


で囲んでもだめですか?

この回答への補足

実行時エラー'1004’アプリケーション定義またはオブジェクト定義のエラーがでました。

変数がおかしくても、このようなエラーになりますか?

また、貼付け元のセルが結合されていて、貼付け先は結合がないのですが、そのようなことも原因にありますか?ありませんよね…。

補足日時:2008/12/03 16:17
    • good
    • 0

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