1つのファイル(ブック)の中に2枚のシート(aとb)があり、「シートaのセル(a5)の値をコピーし、シートbのセル(b7)に貼り付ける」 という簡単なマクロを作り、シートb上にマクロボタンを設定しました。
シートを跨いで値をコピペするというものです。
《フォームコントロールの ボタン》にコードを設定し実行すると想定通りに動くのですが、《ActiveXコントロールのコマンドボタン》にコードを記述して設定した場合はエラーとなってしまいます。
エラー表示は下記の通りです。
実行時エラー’1004’:
Range クラスの Select メソッドが失敗しました。
マクロ用ボタンとしては、色を変えられる等、自由度が高い《ActiveXコントロールのコマンドボタン》の方を使いたいのですが、上記エラーになる原因と解決方法をご教示いただけませんでしょうか。
尚、図形にマクロを登録した場合は、想定通りに動きます。
また、シートを跨がず、同じシート上でのセル値のコピペの場合は、問題なく動きます。
OS Win10
Excel Microsoft 365 (2016)
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
こんにちは
すでに解決されていると思いますが、
ActiveXコントロールのコマンドボタンのコードははシートモジュールに記されます
>Range("A5").Select ← この部分が黄色に色付けになっています。
からSheets("シートb")にボタンを設置した事が想像できます。
シートモジュールでRangeはシートオブジェクトが省略されている場合
書かれているシートオブジェクトが省略されています。
(標準モジュールの場合ActiveSheet)
なので
Sheets("シートa").Select
Range("A5").Select
シートaからシートbのA5セルを参照する事になり見つけられないので
1004となります。
なので
Sheets("シートa").Select
Sheets("シートa").Range("A5").Select
又は
Sheets("シートa").Select
ActiveSheet.Range("A5").Select
とすればコードは実行されると思います。
Sheets("シートa")にActiveXコントロールのコマンドボタンを設置した場合は、
最後の Range("A1").Select で同様の原因でエラーが返されると思います
すでに回答にあるように値参照(代入)で良ければ、
同範囲.Value=同範囲.Valueとするのが良いと思います。また、自動記録で作成したマクロコードは初めにSelectとSelectionなどを判り易く加工するのが良いと思います。慣れると簡単です。さらにオブジェクトでまとめるなども加工のテクニックですね。
独学なので間違った情報が含まれているかもしれません。
Qchan1962さん
ご丁寧にご説明いただきありがとうございます。
>シートaからシートbのA5セルを参照する事になり見つけられないので
1004となります。
ご教示いただいたように、改めてシート名を明示すると、想定通りに実行できました。
Sheets("シートa").Select
Sheets("シートa").Range("A5").Select
大変勉強になりました。
ありがとうございました。
No.3
- 回答日時:
こんにちは
ActivateやSelectメソッドはいろいろと面倒なので、省くようにするのが良いでしょう。
例えば、以下のように変えたら動作しませんか?
Private Sub CommandButton1_Click()
Worksheets("シートb").Cells(Rows.Count, 5).End(xlUp).Offset(1).Value = _
Worksheets("シートa").Range("A5").Value
End Sub
fujillinさん
ご回答ありがとうございます。
ご教示いただきましたコードで、思い通りの動作ができました!
コピー → 貼り付けするのでなく、直接 値を代入するということでしょうか。
簡潔に記述できるのですね。
ありがとうございました。
No.2
- 回答日時:
こんばんは。
推測ですが、ボタンがSelectされている状態で、セル関係のプログラムを
実行しようとして、エラーになっているとか?
Msgbox Selection.Name で何が表示されるでしょうか?
mygoonicknameさん
早速のご連絡ありがとうございます。
>ボタンがSelectされている状態で、セル関係のプログラムを実行
開発タブの「デザインモード」はOFF状態で、ボタンはSelectされていないと思います。
>Msgbox Selection.Name で何が表示されるでしょうか?
すみません。初心者なもので、仰っている意味がよくわかりません。
マクロボタンを押下直後に表示されるエラー表示は、質問に書きましたように下記です。そのことでしょうか?
実行時エラー’1004’:
Range クラスの Select メソッドが失敗しました。
上記エラー表示ウィンド?にある、「デバッグ」ボタンを押すと、実際のコードには、
Range("A5").Select ← この部分が黄色に色付けになっています。
No.1
- 回答日時:
どんなコードを書いたんですか?
bonaronさん
早速のご連絡ありがとうございます。
コードは下記の通りです。
関数(合計)のセルをコピーし、別シートに 値だけ貼り付けるものです。
Private Sub CommandButton1_Click()
Sheets("シートa").Select
Range("A5").Select
Selection.Copy
Sheets("シートb").Select
ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
マルチディスプレイを使用していますがexcelマクロが使えない
Visual Basic(VBA)
-
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
エクセルのマクロボタンが動かなくなった。
Excel(エクセル)
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスへ降順に表示す...
-
複数シートを一括で保護を掛け...
-
エクセルを共有にすると、シー...
-
Access-VBAでExcelファイ...
-
VBAでVlookup機能を使うときに...
-
エクセルVBAでフォームの無効化...
-
マクロのイベントトリガー
-
Auto_Openマクロ
-
「段」と「行」の違いがよくわ...
-
VBA シートをコピーする際に Co...
-
マクロの「SaveAs」でエラーが...
-
VBAマクロ実行時エラーの修正に...
-
[EXCEL]ボタン押す→時刻が表に...
-
B列の最終行までA列をオート...
-
VLOOKUPの列番号の最大は?
-
VBAでの SendKeysの変数指定方法
-
エクセル マクロ オートフィ...
-
VBA 空白行に転記する
-
罫線の斜線を自動で引くマクロ
-
Excelで、あるセルの値に応じて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートを一括で保護を掛け...
-
エクセルVBAでオブジェクトが必...
-
Access-VBAでExcelファイ...
-
コンボボックスへ降順に表示す...
-
エクセルを共有にすると、シー...
-
エクセルのVBAについて教えてく...
-
マクロ実行後、画面がちかちか...
-
マクロのコマンドボタン《Activ...
-
VBAでVlookup機能を使うときに...
-
エクセルのマクロ(大量データ...
-
エクセルVBAでフォームの無効化...
-
エクセルで品番を入れると、そ...
-
Excell VBA にて配列に定数を代...
-
ExcelVBA その回のみ...
-
excelのvbaでのシート指定が時...
-
別のブックを開く時にシートを...
-
エクセルVBA 別シートの最終セ...
-
他ブックへの書き込みについて
-
vbaアニメーションについて
-
EXCELに関する質問
おすすめ情報