- ベストアンサー
ExcelVBA:ワークシートに付けたコマンドボタンから、セル全体をコピーするコード
ExcelVBAでワークシートに付けたコマンドボタンを押すと、ワークシートを指定し、コピーするプログラムを作りたいのですが、「実行時エラー'1004':RangeクラスのSelectメソッドが失敗しました。」というようなエラーが出て動きません。 プログラムは以下の通りです。 Private Sub CommandButton1_Click() Sheets("Sheet1").Select Cells.Select Selection.Copy End Sub どのようにすればよいでしょうか? 回答よろしくお願いします。
- miya_HN
- お礼率100% (1683/1683)
- オフィス系ソフト
- 回答数3
- ありがとう数4
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
どんな目的でこのマクロを実行するのか分かりませんが、以下にすればエラーにはなりません Private Sub CommandButton1_Click() Sheets("Sheet1").Cells.Copy End Sub でもシート全体をコピーするのではなく必要な範囲をコピーする方がよいようにも思いますが…
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
マクロの記録はどうしたの。マクロの記録など相手にしないレベルですか。 Sub Macro1() Cells.Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste End Sub と出たけど、これでは都合が悪いのかな。 質問する前に、マクロの記録を取れるものは採って、それではうまくいかないとか、そういう風な話の持って行き方・考え方が良いのではないですか。 ーー ただしシートのコピーなど似たようなkとは色々できそうですが。
お礼
imogasiさんのおっしゃる通り、質問の前にマクロを実行してそれを元にプログラムを作りました。それでプログラムを走らせたところ、エラーが出てしまいました。 この部分の話が抜けてましたね。 ありがとうございました。
- xcode_15
- ベストアンサー率18% (19/102)
「ExcelVBAでワークシートに付けたコマンドボタンを押す」とは、Sheet1をもコピーする事ではないよね。 Sheet1も対象にすると、動かしているプログラム自信をもコピーする事になるので、可笑しくありませんか?
お礼
今更ですが、お礼の記載が大変遅くなり、申し訳ありません。 ありがとうございました。
関連するQ&A
- エクセル マクロ コマンドボタンで行をコピーエラー
教えてください。 sheet2にコマンドボタンを作成し、コードを下記の通りに入力しました。 ボタンを押すと「RangeクラスのSelectメソッドが失敗しました。」とエラー表示され デバックを見るとRows("1:1").Selectが原因みたいですが、どのように手直ししたら いいか教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Sheets("Sheet1").Select Rows("1:1").Select Selection.Copy Sheets("Sheet2").Select Rows("20:20").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
- ベストアンサー
- オフィス系ソフト
- コマンドボタンが実行されません…
簡単な命令文だと思うんですが、Rangeクラスのselectメゾットが失敗ってエラーが出ます。どうしてなんでしょう?よろしくお願いします。 Private Sub CommandButton1_Click() Sheets("1").Select Range("A1").Select Selection.Copy Sheets("2").Select End Sub
- ベストアンサー
- Visual Basic
- ExcelVBAで複数のコマンドボタンを一つに!
ユーザーフォーム上にたくさんのボタンを配置しているのですが、 すべて同じ動作なので、一つにまとめたいです。 どのように記述したらよいでしょうか? Private Sub CommandButton1_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton2_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton3_Click() Selection.Interior.color = select_Color End Sub Private Sub CommandButton4_Click() Selection.Interior.color = select_Color End Sub
- ベストアンサー
- その他MS Office製品
- 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には値がはいっています。 よろしくおねがいします。
- 締切済み
- Visual Basic
- エクセル2000VBA コマンドボタンがうまく動きません
こんにちは、VBA初心者です。 2枚のシートがあり、「入力」というシートの任意のセルを、「出力」という別シートにコピーするという作業をコマンドボタンによって行いたいと思っています。 自分で作ってみたものは、このようになります。 Private Sub 任意の行のコピー・印刷_Click() Application.ScreenUpdating = False 'セル内容コピー Selection.Copy Sheets("出力").Select Range("A9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("入力").Select ActiveCell.Offset(0, 1).Select Application.CutCopyMode = False Selection.Copy Sheets("出力").Select Range("C9").Select (以下略) ところが、これだと 「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました」と表示され、デバッグをかけると6行目のRange("A9").Selectが黄色く反転した状態になります。 どうしてでしょうか。 同じ内容のものをマクロで登録し、実行すると、何の問題もなく動くのですが… ほとほと困っております。 どうかよろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- コマンドボタンを押したときシート2のa行の空白セルを選択したいのですが
コマンドボタンを押したときシート2のa行の空白セルを選択したいのですが以下のやり方では”RangeクラスのSelectメソッドが失敗しました。”のエラーが出てしまいます。どこがいけないのか教えてください。 Private Sub CommandButton1_Click() Worksheets("sheet2").Activate Range("a65536").End(xlUp).Offset(1).Select End Sub ちなみに、コマンドボタンはシート1にあります。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロの記録で作ったルーチンが動きません
EXCEL2002で「マクロの記録」を使ってこんなマクロを作りました。 <マクロ> Sub Macro1() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これをコマンドボタンの押下に組込、こんなサブルーチンにしました。 <サブルーチン> Private Sub CommandButton3_Click() Sheets("ABC").Select Sheets("ABC").Copy Before:=Sheets(1) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("ABC").Select Application.CutCopyMode = False ActiveWindow.SelectedSheets.Delete End Sub これを実行すると4行目のCells.Selectで 実行時エラー'1004' RangeクラスのSelectメソッドが失敗しました。 となって止まってしまいます。 ■■質問■■ なぜでしょう?<マクロ>の方はエラーになりません。 ■■追加の質問■■ 一方、マクロの方は 選択したシートに、データが存在する可能性があります。データを完全に削除する には、[削除]をクリックしてください。 となってしまいます。このメッセージを回避する方法ははありますか?
- ベストアンサー
- Visual Basic
- アクティブでないシートのセルを選択
Excel VBAでアクティブでないシートのセルをSelectすることはできないのでしょうか。 Selectメソッドというのは,もともとそういうものなのでしょうか。 エラー: 「RangeクラスのSelectメソッドが失敗しました。」 コード Sub aaa() With Worksheets("Sheet2") .Range(.Cells(44, 1), .Cells(48, 21)).Select End With End Sub
- ベストアンサー
- その他MS Office製品
- エクセルVBA マクロの記録をコマンドボタンにコピペしても動かないのはなぜ?
マクロを記録した以下は問題なく動くのですが、 Sub Macro1() Sheets("AAA").Select Range("A39:AQ39").Select Selection.Copy Sheets("BBB").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub これをシート”BBB”のコマンドボタンに下記のようにコピペすると Range("A39:AQ39").Selectでエラーが発生し動きません。 どうすれば動くようになるのでしょうか? また、どうしてボタンだとコピペするだけではいけないのでしょうか? Private Sub CommandButton1_Click() ここにコピペ End Sub
- ベストアンサー
- その他(プログラミング・開発)
- セルをコピーしてシート名を取得 【VBA】
こんばんわ。 エクセルのVBAについて、どうしてもわからなくなったので質問させて下さい。 マクロの内容は 1.一番前のシート(名前はSheet1ではありません。)のボタン35をクリック 2.シートをコピーして3番目に置く。 3.値にする。 4.シート名をセルの"DE16"に入っている値にする。 5.ボタンを消す。 以下の内容になりましたが、名前のところでデバックがおこります。 Sub ボタン35_Click() Worksheets(1).Select Worksheets(1).Copy After:=Sheets(3) Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Worksheets(3).Select Worksheets(3).Name = Range("DE16").Value ActiveSheet.Shapes("Button 11").Select Selection.Delete Application.CutCopyMode = False End Sub どなたかお知恵を貸して下さい。
- ベストアンサー
- オフィス系ソフト
お礼
目的は、データを元に新規作成し、そこに元のデータと加工したデータをワークシートに貼り付けるという作業をプログラムで作りたいということです。 Sheets("Sheet1").Cells.Copy この方法なら、エラーが出ずにプログラムが動きますね。 シート全体をコピーするのはそのときによって範囲が変わってしまうので、どうせなら全体をコピーした方がいいかなぁと思いました。 大変参考になりました。 ありがとうございました。