• ベストアンサー

コマンドボタンが実行されません…

簡単な命令文だと思うんですが、Rangeクラスのselectメゾットが失敗ってエラーが出ます。どうしてなんでしょう?よろしくお願いします。 Private Sub CommandButton1_Click() Sheets("1").Select Range("A1").Select Selection.Copy Sheets("2").Select End Sub

  • hanma
  • お礼率63% (104/165)

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

たぶん、マクロ記録をそのままもってきたようですね。 簡単に言うと、ボタンがSheets("1")上ではなく別なシートにあるからです。 その場合には、Range("A1")の前にシート名を付けないといけません。 '----------------------------------------- Private Sub CommandButton1_Click() Sheets("1").Select   Sheets("1").Range("A1").Select  '●シート名を付ける Selection.Copy Sheets("2").Select End Sub '----------------------------------------- 但し、マクロ記録のある場所にコードがあるとエラーはでません。 例えば次のように。 '------ボタンのあるシート(いまのまま)--- Private Sub CommandButton1_Click()   Call Macro1 End Sub '----- 標準モジュール(マクロ記録でできる場所)---- Private Sub Macro1() Sheets("1").Select Range("A1").Select  '▲エラーは出ない Selection.Copy Sheets("2").Select End Sub '----------------------------------------- それから通常今回のようにコピーするだけならSelectする必要はありません。 どういったときにSelectが必要かそうでないかは、追々分かるでしょう。 '------------------------------------------------ Private Sub CommandButton1_Click()   Sheets("1").Range("A1").Copy Sheets("2").range("B5") End Sub '------------------------------------------------ ●●● 複数のシートを扱う場合は、Rangeの前に必ずシート名を付けるようにした方がいいでしょう。 以上。  

hanma
質問者

お礼

普通にコマンドボタンからマクロを実行させるようにします。 おっしゃる通りにマクロ記録をそのまま持ってきましたが、それでどうしてセルを選ぶところが引っかかってエラーになるのかが不思議でしたので質問させていただきました。 ありがとうございました、お騒がせしました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

難しさがどこにあるかわかってないからだが、 標題 >コマンドボタンが実行されません… がおかしい。コマンドボタンの問題ではない。自分の意図したことが 実行されないのでしょう。 >CommandButton1_Click()のルーチンに、クリックしても飛ばないのか。 確認は MSGBOX "AAA"などをCommandButton1_Click()の下行に入れて クリックしてみればよい。 SELECT ACTIVATE (COPY)PASTE張り付け先の書き方 はVBAでの難関の箇所。色々勉強する必要がある。本でも解説が少なかったり 、チョコット書いてあったりする。 ーーー 質問はそこにはないようだが >Sheets("1").Select は1というシート名のシートの意味になるが、そんなシートが質問者の場合、あるのか。 全角の1という名前のシートは可能のようで >Sheets("1").Select はOKのようだ。 >Range("A5").Select 私の場合A5にした これもOKのようだ しかしシートのコピーをするのか、Range(セル範囲)のコピーをするのか質問に書いてない。質問にはコードを載せるだけでなく、本当は何をしたいのか文章ではっきり書くべきである。 >Selection.Copy でA5ガブリンクする状態になる。 >Sheets("2").Select Sheet2を選択した常態になる。さてあと何がしたいの。 尻切れじゃないか。なにが聞きたいのかわからん。

hanma
質問者

補足

「なにが聞きたいのかわからん。」 方が長々と回答欄に書き込んでる事の方がよっぽどわからんと思いますが… 痛っ

noname#67980
noname#67980
回答No.1

シートの名前が"1"とか"2"でなく、1番目のシート、2番目のシートと言う意味ならば、以下のように試してみてください。 Private Sub CommandButton1_Click() Sheets(1).Select Range("A1").Select Selection.Copy Sheets(2).Select End Sub

hanma
質問者

補足

早速のご回答ありがとうございます。 シートの名前が"1"とか"2"という意味です。

関連するQ&A

  • エクセル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

  • ExcelVBA:ワークシートに付けたコマンドボタンから、セル全体をコピーするコード

    ExcelVBAでワークシートに付けたコマンドボタンを押すと、ワークシートを指定し、コピーするプログラムを作りたいのですが、「実行時エラー'1004':RangeクラスのSelectメソッドが失敗しました。」というようなエラーが出て動きません。 プログラムは以下の通りです。 Private Sub CommandButton1_Click() Sheets("Sheet1").Select Cells.Select Selection.Copy End Sub どのようにすればよいでしょうか? 回答よろしくお願いします。

  • エクセル マクロ コマンドボタンで行をコピーエラー

    教えてください。 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

  • 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には値がはいっています。 よろしくおねがいします。

  • VBA コマンドボタン 頭に0がでない

    各ボタンに以下を入れる Private Sub CommandButton1_Click() Selection.Value = Selection.Value & "1" End Sub Private Sub CommandButton2_Click() Selection.Value = Selection.Value & "2" End Sub . . Private Sub CommandButton10_Click() Selection.Value = Selection.Value & "0" End Sub Private Sub CommandButton11_Click() Selection.Value = Selection.Value & "." End Sub 0.1と入力しても0.1が表示できなく、1となってしまいます。 また.1と入力しても0.1でなく、1になってしまいます。 どうすれば良いでしょうか?

  • エクセル2003のマクロでコマンドボタンでの貼り付けが出来ない。

    はじめまして、マクロ記載などコードを書くのは初めての初心者です。今回エクセル2003のマクロで、ワークシートから数値データーを他のワークシトに貼り付けようとコマンドボタンを作成して実行してるのですが、「実行時エラー1004、rangeクラスのserectメソッドが失敗しました」とのエラーが帰ってきます。 しかしマクロダイアログにコードを貼り付けて操作すると成功してしまいます。 コマンドボタンが使用出来ないのでしょうか? 教えて頂けないでしょうか、何方かよろしくお願いいたします。 /////////////////////////////////////////// Private Sub CommandButton2_Click() Range("B5:AX14").Select Range("B5:AX5").Select Selection.Copy Sheets("報告FORMAT").Select Range("A72").Select ←ここで止まってしまってる様です。 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=True, Transpose:=False Range("A68").Select Sheets("管理format").Select Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "" Range("A2").Select End Sub //////////////////////////////////////////////////

  • 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

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

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

    エクセル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)エラーが起きない為にはどのようにしたら良いでしょうか?

  • エクセル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が黄色く反転した状態になります。 どうしてでしょうか。 同じ内容のものをマクロで登録し、実行すると、何の問題もなく動くのですが… ほとほと困っております。 どうかよろしくお願いします。

専門家に質問してみよう