• ベストアンサー

エクセルのマクロについて

エクセル97でマクロを組んで下記作業を行いたいと考えていますが(実際にやりたい事から抜粋した内容です)、不具合が起こっています。 ~やりたい事~ コマンドボタンを押すとあるシートのセルをコピーして、違うシートに貼り付ける。 ~不具合内容~ (1)普通にマクロを実行すると問題ないが、(2)コマンドボタンを使用するとエラーが起こる。 エラー内容は、 「実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。」 と言う内容です。 ~(1)のVB表記~ Sub Macro1() Sheets("sheet1").Select Range("A1").Select Selection.Copy Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~(2)のVB表記~ Private Sub CommandButton1_Click() Sheets("sheet1").Select Range("A1").Select (←ここでエラーが発生します) Selection.Copy  Sheets("sheet2").Select Range("A1").Select ActiveSheet.Paste End Sub ~質問事項~ 1)(2)の表記の何が原因でエラーが起こっているのでしょうか? 2)エラーが起きない為にはどのようにしたら良いでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sanakazu
  • ベストアンサー率18% (43/230)
回答No.4

Sheet内では  Private Sub CommandButton1_Click()   Call copy_paste  End Sub とし、Module内で  Public Sub copy_paste()   Sheets("Sheet1").Select   Range("A1").Select   Selection.Copy   Sheets("Sheet2").Select   Range("A1").Select   ActiveSheet.Paste  End Sub では?

poppoyaya
質問者

お礼

どうもありがとうございました。 呼び出す方法は初めて知り、本当に助かりました。 活用させて頂きます。

その他の回答 (3)

  • jindon
  • ベストアンサー率43% (50/116)
回答No.3

#2です。 当然、 Destination:=Sheets("Sheet2").Range("A1") です。

poppoyaya
質問者

お礼

ありがとうございました。

  • jindon
  • ベストアンサー率43% (50/116)
回答No.2

Select しない方法です。 Private Sub CommandButton1_Click() Sheets("Sheet1").Range("A1").Copy _ Destination:=Sheets("Sheet2").Range("H1") End Sub

poppoyaya
質問者

お礼

どうもありがとうございました。 エラーにならずに実行する事ができ、本当に助かりました。 活用させて頂きます。

  • hisako27
  • ベストアンサー率9% (10/104)
回答No.1

1:Private Sub CommandButton1_Click() 2:Sheets("sheet1").Select 3:Range("A1").Select  4:Selection.Copy  5:Sheets("sheet2").Select 6:Range("A1").Select 7:ActiveSheet.Paste 8:End Sub 質問内容で試してみたら 6行目でエラーになりましたよ? その対策として Sheets("sheet2").Range("A1").Select としたところ正常にコピーされましたが・・・?

poppoyaya
質問者

お礼

すみません。 なぜか私の場合、表記を直してもエラーになりました。

関連するQ&A