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行目からの選択となります
よろしくお願いいたします
多分
>Worksheets("sheet2").Range(Cells(15, 1), Cells(f, 5)).Select
が不味いかと。
Cellsの前にWorksheets("sheet2").が必要でしょう。
(指定しないと多分sheet1のセルとみなされる)
ところで、このコードはExcel VBAでしょうか?
環境を明記されないと、ピンポイントの回答がもらえる可能性が低くなりますよ。
レスありがとうございます
超遅レスにて大変しつれいしました
環境は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
下でいけました
基本的なことがわかっていませんでした。へこみました
Blueさんありがとうございました
Private Sub CommandButton3_Click()
Range("i11:m50").Copy Worksheets("sheet2").Range("a11")
ツイート | ![]() |