• ベストアンサー

エクセルマクロでの削除

エクセルマクロについて教えてください。 ファイルにシートが40シートあります。 1~35シートの同じ箇所を削除していきます。但し、36~40までは削除しません。 詳しく説明すると、 シート1のF8~BR9を削除→F16~BR17を削除→F24~BR25を削除。 次に、シート2のF8~BR9を削除→F16~BR17を削除→F24~BR25を削除。シート3のF8~BR9を削除→F16~BR17を削除→F24~BR25を削除。これをシート35まで繰り返します。 これを記録させて実行させてみたのですが、プロシージャが大きすぎます。というエラーメッセージが表示されます。 これを解決する方法を教えて下さい。 但し、シート36~シート40は削除しません。 宜しくお願いします。

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

  • ベストアンサー
回答No.2

原因は、記録マクロで記述したプログラムが長すぎることにあります。 1枚分の削除処理をForループで繰り返すようにすれば、コード量を減らせます。(#1さんのコードがそれですね) プログラムを触る自信がなければ、記録マクロを複数に分割すれば大丈夫かと。 ★おまけ★ そのようなエラーが出たこと無かったのでどのくらいでエラーが出るのか試してみました。 Dim i As Integer i = 1 i = 1 i = 1 ・・・・ というように、ひたすら i に 1 を代入する処理を書いていったところ、9352回目でエラーが出ました。

その他の回答 (3)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.4

マクロについてはすでに言われていることなので省略します。 この場合シート1からシート35をグループにして問題のところを削除するだけでできます。 これぐらいならマクロの記録でも大丈夫でしょう。

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

マクロの記録をして、それを利用する常識を、質問者はわかっていません。 まず1枚のシートでの処理のマクロの記録をとるのです。 そのコードを良く見て、それらの各行がどういう意味(処理)か勉強します。 そこでシートが別のシートに変わったら、どの部分を変えれば良いか、見当をつけます。 そしてマクロの記録を繰り返し実行に持ち込みます。 そのままでは同じもの(こと)が30回(など)行われて意味が無いので、何処か変えては、実行する、のパターンに持ち込まないといけません。 繰り返し回数は普通はシート枚数回(や他の例では行数回)です。 本件では処理対象外シートががありますが。 普通For NextやFor Each Nextを使います。 何処を変えるべきかは、判らなければ質問するほか無いでしょう。 しかし、どう変えるかは別にして、どこを変えるかぐらい判るはずです。これが判らないようでは、VBAのプログラムは組めません。 私は文章にして、じっくり考えることをお勧めします。 シートによって削除するセル範囲が違うときなど、別にコードを書き並べて連ねないでどうするか、今後の質問者の勉強課題です。

回答No.1

こんな感じでしょうか。 ・「削除」して「上」に詰める場合。 Dim i As Integer For i = 1 To 35 With WorkSheets("シート" & i) .Range("F24:BR25").Delete Shift:=xlUp .Range("F16:BR17").Delete Shift:=xlUp .Range("F8:BR9").Delete Shift:=xlUp End With Next ・「削除」が実は「消去」の意味の場合。 Dim i As Integer For i = 1 To 36 WorkSheets("シート" & i).Range("F8:BR9,F16:BR17,F24:BR25").ClearContents Next

関連するQ&A

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

    エクセル2007でマクロ1の記録を行い「更新」ボタンにマクロ1を設定しています。Sheet1からSheet12迄の入力データを「更新」ボタンクリックで 削除するように記録しています。 Sheet1からSheet12をシート保護した場合マクロ1は実行エラーになり 各シートを保護解除すると正常に実行します。 Sheetがまたがるマクロの記録はシート保護をするとだめなのでしょうか? 各Sheet共入力セル以外をロックしたい為、シート保護をかけようと思います。

  • エクセルマクロで教えてください。

    エクセルのマクロで、自動処理で、「Sheet1」を削除しようとしました。 しかし、削除しようとしたマクロを実行すると下記のメッセージが毎回出てしまいます。メッセージを出さない方法はありますでしょうか? メッセージ:選択したシートに、データが存在する可能性があります。データを完全削除するには、・・・・・」

  • エクセルのマクロで、シートを削除するとき・・・

    エクセルのマクロでシートを削除するとき、 「データが存在する可能性があります。削除しますか?」と確認メッセージが出てきます。そこで、「削除する」というボタンを押さないといけません。 この確認をいちいち出さないで(つまりマクロではその確認は不要。削除するボタンを押す手間を省きたい)、マクロでシート削除をしたいのです。 確認メッセージを出さないでマクロでシート削除する方法を教えてください。お願いします。

  • Excel97で作成したマクロをExcel2000で使えず・・・

    よ~く探せば同内容の質問が過去にあるかもしれないのですが、多すぎて探せなかったので、質問します。すいませんが宜しくお願いします。 会社のPC(OSはWin95)のエクセル97でマクロを作成して、共有データエリアに保存し、別のPC(OSはWin98)のエクセル2000で実行しようとしたら、***はマクロを含んでいますとメッセージが出て、マクロを有効にすると、オブジェクトライブラリは登録されていませんというメッセージが出てきたので、OKにし、もう一度マクロを有効にしたら、「***の修復   ***にエラーが検出されましたがMicrosoftExcelは次の修復を行うことによってファイルを開くことができました。修復を保持するにはこのファイルを保存してください。  VisualBasicプロジェクトが失われました。 ActiveXコントロールが失われました。」というエラーメッセージが出てきて、マクロがなくなってしまい、また新しくマクロを記録しようとしても、記録できません、というエラーメッセージが出てきてマクロが作れなくなってしまいました。 尚、セキュリティは中にしてありますが、低でもマクロの記録ができないです。なぜでしょう?

  • エクセルのマクロを削除したい....

    エクセルでマクロを作り過ぎてわけわからなくなってしまいました(^^; (つくったというより、記録させたヤツを使ってるだけですが) これらのマクロを削除する方法がわかりません。 「ツール」→「マクロ」→「マクロ」で現れる窓で、いらないマクロを選んで “削除”のボタンを押すのですが、 「表示されていないブックのマクロは編集できません。[ウィンドウ再表示] コマンドを選択して、ウィンドウを表示してください。」 とメッセージあります。 どうやったら、これらのマクロを削除できるのでしょうか??

  • エクセルのマクロでのシートの削除について

    エクセルのマクロについて エクセル97でファイルを閉じる前にシートを一つ削除するマクロを流そうとしているのですが、 マクロが流れるとシートを削除するかどうかの確認のダイアログが表示されてしまいます。 この確認のメッセージなしでマクロでシートを削除することは出来ないのでしょうか? ----------------- 実際のプログラム ------------------ Sheets(シート名).Select ActiveWindow.SelectedSheets.Delete わかる方がおられましたら宜しくお願い致します。

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

     エクセル2000を使用しています。  先月使っていたファイルをコピーして、今月分のデータを新たに入力しようと思ったのですが、このファイルにはマクロが設定されており、コピーした新しいファイルではエラーメッセージが出てマクロが実行されません。  このエラーメッセージ通りセキュリティーレベルを変更したのですが、やはり同じエラーメッセージが出てマクロが実行されません。  そこで先月分のファイルからマクロ部分のみをコピーして張り付けてみました。  これによってマクロは実行されるものの、その実行にとても時間が掛かってしまいます。  これを解決する良い方法があったら教えて下さい。よろしくお願いします。  *当方は初心者ですので、できれば難解な専門用語は使わないで下さい。お願いします。

  • エクセル・マクロについて教えてください

    こんにちは。エクセルのマクロについて教えてください。 エクセルの表で毎日20000~30000行くらいのデータがあり、フィルタを掛けてやるのもいいですが、業務効率を考えて、マクロを使用したいと思っています。 実行したい内容は、C列(担当)は8と721以外は削除、F列(地域)は渋谷と品川以外は削除、G列(コード)は1000未満と空白行は削除、H列(数量)は0以下を削除 簡易記録マクロで記録してみましたが、毎回データの内容が異なるため、H列のマイナスが削除されていなかったり等、実行したい結果が得ることができませんでした。 マクロも少し勉強していますが本やネットでも検索したりしましたが、うまくできませんでした。ご教授ください。

  • エクセルのマクロを教えてください。(初心者です)その2

    エクセルで期間限定で使えるソフトを作ろうと思っています。 簡単に申し上げると、 使用期限を設けて、期限の日がくると、 エクセルのセルに 「有効期限が来ましたので、再度お申し込みください。」 という文章が表示され(ポップアップでなくていいです)、 このシート以外は片っ端からシートが削除され、 上書き保存され、これ以上使えないというものを作りたいのです。 ツールバーのマクロの記録を利用した 極度に簡単なマクロしかやったことがないので、 以下の点を中心にマクロの作成の仕方を お教え頂けますと幸甚です。 (1)有効期限の日付を入力しておいて、その日が来るとマクロが実行される方法 TODAY関数と有効期限の引き算でゼロになったら実行でしょうか。 該当セルの数値がゼロになったらマクロが実行されるという方法を お教え頂けませんか。 ちなみに、有効期限の日付は、非表示にしてシートの保護で開けないようにしておこうと思います。 (2)有効期限が来たら自動的にマクロが実行される方法 上記(1)の方法でやれば、ファイルを開いたとたんマクロが実行されるのでしょうか。 (3)マクロでシートを削除する方法 これは、通常のマクロの記録でやろうとすると、 シートを削除すると「やり直し」でもシートを復活させられないので、 シートがなくなっちゃった状態でしか保存できない気がするのですが・・・。 (4)上書き保存するマクロ 上記(3)と同様、マクロの記録では できないので、これ以外のやり方をお教え頂けませんか。 (5)シートを表示させるマクロ マクロを実行した時点で「有効期限が来ました・・」と入力された シートを表示させたいのです。 マクロで表示させる方法をお教え頂けますでしょうか。 (6)マクロを見れないようにする方法 マクロを自由自在に操れる人が 私の作ろうとするエクセルファイルを手にしたら、 「有効期限になる前にマクロを削除しちゃえ」と やられないかが心配です。 うまい対処方法ございませんでしょうか。 (7)パソコンの日付の操作の対処 上記の(6)と絡むのですが、 パソコンの日付とプロパティーから パソコンの日付をいじって 有効期限より前の日付にしたら ずっと使われてしまうのではないか心配です。 うまい対処方法ございませんでしょうか。 ずぶの素人の私にどなたか この方法をご教示頂けませんでしょうか。

  • エクセルマクロでシートを削除するときのメッセージ

    エクセルのマクロでシートを削除するときにメッセージボックスで、本当に削除するか確認されて、マクロが中断されてしまいますが、 1) マクロで「Yes」を選択する。 2) システム設定か何かでメッセージボックスを開かないようにする。 のどちらかできないでしょうか? よろしくお願いします。

専門家に質問してみよう