• ベストアンサー

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

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

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

  • ベストアンサー
  • 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/17070)
回答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"という意味です。