単純なデータコピーだと思うのですが

解決


はじめまして  2007-01-12 14:19:49  No: 134815

Private Sub CommandButton3_Click()

Dim now_row As Long, f As Long

Worksheets("sheet1").Range("i15").Select

 now_row = ActiveCell.Row

  'i列の終端セルの行を取得する
        e = Worksheets("sheet1").Range(ActiveCell, ActiveCell.Offset(0, 4)).End(xlDown).Row
        f = e - now_row
  'i〜m列(i15からはじまる)の選択範囲を、空白のセルに達するまで(データのあるセルまで)選択する
        Worksheets("sheet1").Range(ActiveCell, ActiveCell.Offset(f, 4)).Select
        Selection.Copy
        Worksheets("sheet2").Range(Cells(15, 1), Cells(f, 5)).Select
        ActiveSheet.Paste
        
        MsgBox "コピー完了"
        
End Sub

すみませんが教えてください
上記にてシート2にシート1のデータ(データ範囲は変化)をコピーしようとすると、アプリケーション定義エラーまたはオブジェクト定義エラーと出てコピーできません
都合でデータ先頭だけは上下には動かせず15行目からの選択となります
よろしくお願いいたします


Blue  2007-01-12 17:49:37  No: 134816

多分
>Worksheets("sheet2").Range(Cells(15, 1), Cells(f, 5)).Select
が不味いかと。
Cellsの前にWorksheets("sheet2").が必要でしょう。
(指定しないと多分sheet1のセルとみなされる)

ところで、このコードはExcel VBAでしょうか?
環境を明記されないと、ピンポイントの回答がもらえる可能性が低くなりますよ。


ありがとうございます  2007-01-16 10:06:00  No: 134817

レスありがとうございます
超遅レスにて大変しつれいしました
環境はexcel2002 sp3のVBAです

なんとか自分の力でと格闘してまして、web見るのわすれてました
一応できたのですが、なんでエラーがでててたのか未だわかりません

解決する過程で、エクセルのマクロの自動記録機能を利用したときは、以下のマクロが記述されてあって
Sub Macro1()

    Range("B11:F12").Select
    Selection.Copy
    Sheets("sheet2").Select
    Range("A11").Select
    ActiveSheet.Paste
End Sub
これを先日質問させていただいたPrivate Sub CommandButton3_Click()以下にコピーして実行したところ、a11セル指定のところで同じエラーが出ました。
結局下記コードでやりたいことはできているのですが、理由がわかりません。
どうしてできなかったのか、またなんで以下だとできたのか教えていただけませんでしょうか?moduleに記述するのと、Private Sub に記述する違い??
またレス遅れるかも知れませんが是非よろしくお願いいたします。

Private Sub CommandButton3_Click()

Range("i11:m50").Copy
Sheets("sheet2").Select
Worksheets("sheet2").Range("a11").Select
ActiveSheet.Paste Destination:=Worksheets("sheet2").Range("a11:e50")

End Sub


自スレ  2007-01-17 07:30:13  No: 134818

下でいけました
基本的なことがわかっていませんでした。へこみました
Blueさんありがとうございました

Private Sub CommandButton3_Click()

Range("i11:m50").Copy Worksheets("sheet2").Range("a11")


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加