• ベストアンサー

エクセルでマクロ登録の不具合解消

エクセルでマクロを作成し 「ツール」→「マクロ」→「実行」 を行うとうまくのですが コマンドボタンを配置して Click イベントに 同じマクロ文を登録してボタンを押すと Cells.Select でエラーが出ます 「実行時エラー '1004'; Range クラスの Select メソッドが失敗しました」 コマンドボタンにマクロを登録する場合 設定か何かあるのでしょうか 誰か 教えてください

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

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.5

Cells()はオブジェクトの指定を省略すると、アクティブシートのセルのことになり(この場合はボタンが配置されているシート)、またアクティブではないシートのセルをselectできませんのでそのような状況になります。 対策としてはそもそも不要なselectはしないという手もお薦めです。 コード的にもシンプルになりますし動作もはやくなります。 見本 With Sheets("Sheet2").Cells .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False End With

nagitubasa
質問者

お礼

ありがとうございます 何とかなりそうです

その他の回答 (4)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

No1です。 やはりコードの問題です。 Sheets("抽出原本 (2)").Select ActiveSheet.Cells.Select としてみてください。 ただのCellsでは、コマンドボタンを配置したシートのセルとなり、Sheets("抽出原本 (2)").Selectしてるのでエラーになったのです。

nagitubasa
質問者

お礼

ありがとうございます 何とかなりそうです

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.3

詳細はコードを見ないと分かりませんが、ボタンにフォーカスが移った状態でセルを直接セレクトしようとしたらその手のエラーが出ることがあったような気がします。 先にその該当セルが含まれるシートをアクティブにするとかの手順が必要かもしれません。 Workshees(1).Activate Cells.Select こんな感じで

nagitubasa
質問者

補足

ご回答ありがとうございます 今回はシートセレクトでシートはアクティブにしているのですが? *********マクロの抜粋********** 製番の作成---------------- Sheets("抽出原本 (2)").Select Cells.Select ’"ここでエラーとして止まってしまう" With Selection .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False *******************************

  • nnfuji
  • ベストアンサー率28% (200/701)
回答No.2

普通はそのやり方で問題ありません。 やはり、コードの記述に問題があるのでしょう。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

自作のマクロの不具合を質問するなら、作成したコードを記述した方が回答しやすいと思いますが・・・。

nagitubasa
質問者

補足

以後気をつけます。 今回のマクロは 600行ぐらいありますので 貼り付けるのはちょっとと思いまして ちなみに エラーの出る部分だけ貼り付けます ****マクロ抜粋**** '製番の作成--------------- Sheets("抽出原本 (2)").Select Cells.Select "ボタンに登録した場合、ここでエラーとなる" With Selection .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False ******************

関連するQ&A

  • Excel)マクロ登録したソースをボタンへ移行すると1004エラー

    Excelマクロの登録して作ったマクロをボタンを作成し移行しました。 実行すると、「エラー1004 Rangeクラスのselectメソッドが失敗しました。」と エラーがでました。 やりたいことは、シートAにあるボタンをクリックすると、シートBの値を 初期化したいのです。 コードは以下の通りです。 Sheets("B").Select Range("I65:K87").Select Selection.ClearContents どうすればよいでしょうか?

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

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

  • エクセルをバージョンアップさせたらマクロがうまくいきません

    OSはXPです エクセル2002から 2003にバージョンをあげました いままでうまくいっていたマクロが Range(Cells(1, 1), Cells(Cells(65535, 1).End(xlUp).Row, 9)).Select Selection.Copy Sheets("Sheet1").Select Sheets.Add ActiveSheet.Paste このような内容で ActiveSheet.Paste  この部分でエラーが起きます 「実行時エラー ”1004”  worksheetクラスのpasteメソッドが   失敗しました」 というメッセージがでます。 どういう対処をしたらよろしいでしょうか? ご教授ください。 (バージョンを元にに戻すなど)

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

  • マクロをボタンに登録するとエラーになる

    ツールのマクロから実行すると、成功するのですが、そのマクロをフォームコントロールのボタンに割り当てると失敗します。RangeクラスのAutofillメソッドが失敗しました、と。 中身としては、(会社のパソコンなので、コードが書けなくてすみません。) 関数を最終行までオートフィルして、フィルターをかけて0以外を表示させ、そのページを印刷する、という形です。 ただ作成したマクロをボタンにすることはできないのでしょうか?? よろしくお願いします。

  • エクセルのマクロの編集で困っています。

    エクセルの印刷のマクロで Range("A1:A12").Select Selection.PrintOut Copies:=1 Range("D2").Select End Sub のマクロで Copies:=1の枚数を 任意の枚数にしたいのですが、どのように記述したらよいか 解りません。1を"?"に変えると 実行エラー’1004’ RangeクラスのPrintOutメッソドが失敗しました。 のエラーが出ます。 よろしくお願い致します。

  • Excel97 マクロで検索

    Excel97を使っています。 「マクロの記録」でセルの値を検索して記録し、そのまま「マクロの実行」で実行するとうまくいくのに、コマンドボタンから呼び出すと、「実行時エラー1004:RangeクラスのFindプロパティを取得できません」と出ます。ヘルプにもないようで困っています。 どのようにしたらよいのでしょうか? 教えてください

  • エクセルRangeオブジェクトの使い方

     エクセルで名簿を作ろうとしています。よくあることですが、入力を簡単にするため、入力メニューを作り、一人目を入力したら次の行に行くようにマクロを考えているのですが、その前に最初のセルを選択させようと下記のように記述したところ、コンパイル時に実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです。というエラーになります。  また、作成したコマンドボタンから実行しても実行時エラー'1004'RangeクラスのSelectメソッドが失敗しましたというエラーになります。 Rangeオブジェクトの記載の仕方は間違いないと思うのですが....ちなみに書こうとしている意味は、表が、全く登録がない場合、最初B2セルから記載していくように考え、追加登録していくときはB1セル(項目に当たる行)から空白行になるまで改行するように考えました。 記述内容 Sub CommandButton1_Click() Worksheets("名簿").Select If Range("B2").Value = "" Then Range("B2").Select ←エラーになる行です Else Range("B1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select End If 名簿登録.Show End Sub

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

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

  • Excelダイアログボックスのボタン命令

    VBAの初心者です。 Excelでダイアログボックスを作りました。ボタンを押したとき、ワークシートの選択した範囲の印刷をさせたいと思っています。 ダイアログボックスのボタンに「ボタン2_Click」と名付けた下記のマクロを登録しました。 Sub ボタン2_Click() With DialogSheets(1) Sheets("Sheet1").Select Range("A3:G12").Select Selection.PrintOut Copies:=1, Collate:=True Range("A13:G18").Select Selection.PrintOut Copies:=1, Collate:=True Range("K18").Select End With End Sub 「ボタン2_Click」マクロは、直接実行すれば希望どおり印刷できます。 しかし、ダイアログボックスのボタンを押した場合には、Range("A3:G12").Selectまで実行しますが、そのあと次のメッセージが出て動きません。 実行時エラー'1004': Range クラスの PrintOut メソッドが失敗しました。 どう修正したらよいのか教えて下さい。よろしくお願いします。

専門家に質問してみよう