こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBAでコマンドボタン操作で他のシートにコピーする方法を教えてください。

エクセルのVBAでコマンドボタン操作でセルの値を他のシートのセルへコピーしたいのですが、やり方がわかりません。
自分なりに作ってみたのですが何が悪いのか教えてください。

Private Sub CommandButton1_Click()
'

Range("A1").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

End Sub

Private Sub が怪しいのですが対処もわかりません。
ちなみにsheets2のA1には値がはいっています。

よろしくおねがいします。

投稿日時 - 2007-10-29 23:52:19

QNo.3473142

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

シートをまたぐ操作で Range を使う場合などは明示的にどのシートの Range か指定しないと思わぬ結果になる事があります。
また、Sheet2のA2以降に記述が無い場合、A1を選んで Ctrl + ↓ は最終行です。
最終行の Offset(1,0)は無いのでこれもエラーに繋がります。

って事で、取り合えず以下の2箇所を直しましたが如何でしょう?

Private Sub CommandButton1_Click()
 Range("A1").Select
 Selection.Copy
 Sheets("Sheet2").Select
 Sheets("Sheet2").Range("A65536").Select '1)
 Selection.End(xlUp).Select        '2)
 ActiveCell.Offset(1, 0).Select
 ActiveCell.PasteSpecial Paste:=xlPasteValues
 Application.CutCopyMode = False
End Sub

ちなみにもっとシンプルにするなら、Selectを省略する事も可能です。

Private Sub CommandButton1_Click()
 Me.Range("A1").Copy
 Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
 Application.CutCopyMode = False
End Sub

書式もコピーして良いならもっとシンプルになります。

Private Sub CommandButton1_Click()
 Me.Range("A1").Copy Destination:= Worksheets("Sheet2").Range("A65536").End(xlUp).Offset(1, 0)
End Sub

投稿日時 - 2007-10-30 00:30:20

お礼

ご丁寧にありがとうございました。
本当に助かりました。

投稿日時 - 2007-10-30 00:46:13

あなたにオススメの質問