• 締切済み

VBAのCopyコマンドについて

bkbkbの回答

  • bkbkb
  • ベストアンサー率33% (97/289)
回答No.3

Sheets(3).Range("B3:B100").Copy _ Sheets(2).Range(Cells(3, col2 - 1), Cells(100, col2 - 1)) これは、まず Sheets(3).Range("B3:B100").Copy はOKですね。直接指定なので。 Sheets(2).Range(Cells(3, col2 - 1), Cells(100, col2 - 1)) これがOKなのは多分偶然です。 多分たまたまSheet(2)を開いてVBAを実行してませんか? Cellsと指定せずに書くと、今アクティブなシートのCellsを使います。 なので、逆に言うとSheet(3)を開いた状態で実行するとエラーになりますよ。 更に補足すれば 下の文では Sheets(3).Range(Cells(2, col1), Cells(100, col1)).Copy ですが、Sheet(2)を開いた状態で実行すると Sheets(3).Range(Sheets(2).Cells(2, col1), Sheets(2).Cells(100, col1)).Copy という意味になっちゃうので、 "シート3"の中の、"シート2"の2,col1から100,col1まで っていう矛盾した文になるのでエラーになるんです。 こういうエラーが起きにくくするために、多少複雑なVBAの時のCellsやRangeなどは全てシートを指定してあげた方が問題が起きなくて良いですよ。

関連するQ&A

  • Copyコマンドについて

    ある行のH~Uまでをすぐ下の行にコピーしたいのですが今まではセルの場所が判っていましたので Sheets(1).Range("H12:U12").Copy Destination:=Sheets(1).Range("H13") としていましたが任意の行ですので r = Sheets(SN).Range("b65536").End(xlUp).Row Sheets(12).Range(Sheets(12).Cells(r + 11, 8), Sheets(SN).Cells(r + 11, 15)).Copy Destination:=Sheets(12).Cells(r + 12, 8) では上手くいきませんCellsを使うときはどうすればよいか教えてください よろしくお願いします

  • VBA初心者です。

    VBA初心者です。 Excel 2010のVBAで、 ワークシートのSheet1のオブジェクトモジュールに 他のシートから別のシートにコピー&ペーストをしたいと思い、 以下のプログラムの記述をすると、 アプリケーション定義またはオブジェクトの定義エラーとなってしまいます。 Worksheets("Sheet2").Range(Cells(1, 7), Cells(d, 8)).Copy Destination:=Worksheets("Sheet3").Cells(3, 1) (「d」は変数です。セルの範囲指定は、実際に記述するときは 範囲が広範になるので、行数列数で把握できるようにCellsを使っています) エラーになる理由と解決法をご教授いただければと思います。

  • エクセルVBAで選択していないシートのセルコピー

    エクセルVBAで質問させてください。 現在選択していないシートから、セルの書式ごとコピーして貼り付けたいのです。 たとえば Sheets(1).Range(Cells(1, 1), Cells(4, 1)).Copy Sheets(2).Range("A1") 等とすると、Sheets(2)が選択されている状態だとエラーになってしまいます。 おそらく、Copyメソッドというのは、選択されているシートにのみ有効だからなのではないか、と思いますが、セルの値だけでなくフォントその他の書式を、別のシート(現在アクティブでない)から持ってくる方法はありますか?

  • VBA セルコピーのエラー

    こんにちは。 Excel VBAの初心者です。 セルコピーについて教えてください。 シート1のセル範囲e4~aj4を、シート2の同じ場所に、そのままコピーします。 Worksheets(1).Range("e4:aj4").Copy Destination:=Worksheets(2).Range("e4:aj4") 上記だと普通に通るのですが、コピー元の行に変数を使用したくて、その前に一度下のように書き換えました。 Worksheets(1).Range(Cells(4, 5), Cells(4, 36)).Copy Destination:=Worksheets(2).Range(Cells(4, 5), Cells(4, 36)) するとエラー1004(アプリケーション定義またはオブジェク定義のエラー1004(アプリケーション定義またはオブジェク定義のエラー)が出て、通らなくなります。 単純なことだと思うのですが、初心者ゆえ困っております。 どなたかご教示いただけますと幸いです。 よろしくお願いいたします。

  • エクセルVBA:繰り返し処理について

    エクセルVBA初心者です。どうかご指導お願いします。 シート1に入力されたデータベースがあります。 B列には氏名が入力されています。 B2の値で絞りこんで、シート2に貼り付け、 B3の値で絞りこんで、シート3に貼り付け、 B4の値で絞り込んでシート4に貼り付けてB列の値が""(空白)になるまで繰り返すコードの書き方を教えてください。 さらに、B列には、当然同じ氏名が何回も入力されているので、前に一度出た人はパスするというようにしたいのです。 下記コードは、「B2の値で絞りこんで、シート2に貼り付け」だけをしたものですが、このコードを応用して作りたいのです。ご指導お願いします。 Sub test01()  With sheets("sheet1")Range("A1")   .AutoFilter field:=2, Criteria1:=Range("B2")   .CurrentRegion.Copy Destination:=Sheets("Sheet2").Range("A1")   .AutoFilter  End With End Sub

  • VBA Copy/Paste メソッド

    エクセル2002使用です。 sheet1のA7からD19セルの値を sheet2のB列の一列に転記をしたいのですが、 コピーが上手くできません。 Copy、Pasteメソッドを使用するときの セルの選択が良くわからないのですが、 よろしくお願いします。 Sub tenki() Dim i As Integer Dim j As Integer For i = 7 To 19 For j = 1 To 4 Cells(i, j).Copy Worksheets("sheet2").Activate Range("B65536").End(xlUp).Select ActiveCell.past ←ここでエラー(注) Next j Next i End Sub (注) エラー  オブジェクトは、このプロパティーまたはメソッドをサポートしていません。

  • アクティブでない複数のシートのセルのコンテンツを一度でクリアしたい

    エクセルVBAで、アクティブでない複数のシートの所定のセルのコンテンツを一度でクリアしたいのですが、 現在アクティブではないシートをアクティブにしないでclearcontentsするとアプリ定義、オブジェクト定義エラーになってしまいます。 それぞれのシートをアクティブにしないとclearcontentsできないのでしょうか? どなたか教えてください。よろしくお願いします。 ------------------------------------------------------------------------------- Sub CLEAR_CONTENTS() Sheets(\"1\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"2\").Range(Cells(6, 3), Cells(6, 8)).ClearContents Sheets(\"3\").Range(Cells(6, 3), Cells(6, 7)).ClearContents End Sub

  • Excel VBA 指定シートの取込

    こんにちは。 ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、 シートが無かった場合の処理方法がわかりません。 現在のコードは下記の様になっております。 With Workbooks.Open"BOOK1.xls" .Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") .Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") .Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1") .Close End With Book1に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • エクセルVBAの貼付けについて

    エクセルVBAの貼付けについて シートAとBがあって、シートBの1~7列をコピーし、シートAの最終行に貼り付ける方法を教えて下さい。 下記のように書いてみたのですがダメでした。 Sheets("B").Select Rows("1:7").Select Selection.Copy Sheets("A").Select With Range("A1").End(xlDown).Offset(1, 0) .ActiveSheet.Paste End With

  • Copyコマンドで値のみのコピーをするには

    現在このような形でCopyを実行しています。 Sheets(2).Range("C8")の書式が変わってしましますのでxlPasteValuesなどを使用して値のみのCopyをしたいのですがどう書けばよいのでしょうか Sheets(1).Range("A12").Copy Destination:=Sheets(2).Range("C8") よろしくお願いします。