• ベストアンサー

エクセルVBAでクリアボタンを作ったのですが・・・

エクセルVBAでクリアボタンを作ったのですが、ひとつのシートは表紙でクリアさせず、その他すべてのシートは同じセル範囲をクリアするというボタンを作成したいのですが 「表紙というシートを除いたほかのシート」と宣言したいのですが表現がわかりません。ご回答よろしくお願い致します。

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

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

質問文は読み返してから送信しましょう。 「表紙」という名前のシートの他に何枚かシートがある。 「表紙」以外の全シートを「クリア」したい。 「クリア」が意味するものが分かりませんが、こちらで勝手に 「[編集]-[クリア]-[すべて]のコマンドと同じ動作」 というように決めてしまいます。 違うのであれば適宜コードを直してください。 Sub ClearSheets()  Dim mySheet As Worksheet  For Each mySheet In ThisWorkbook.Worksheets   If mySheet.Name <> "表紙" Then    mySheet.Cells.Clear   End If  Next mySheet End Sub

siekana
質問者

お礼

ありがとうございました。大変参考になりました。表現が足らず申し訳ございませんでした。今後ともよろしくお願い致します。

その他の回答 (2)

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

Private Sub CommandButton1_Click() Dim sh As Worksheet For Each sh In Worksheets ' MsgBox sh.Name If sh.Name = "表紙" Then Else sh.Range("a1:c13").ClearContents End If Next End Sub Range("a1:c13")をクリアする例。

siekana
質問者

お礼

ありがとうございました。大変参考になりました。今後ともよろしくお願い致します。

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

まず、何を基準に 表紙 と判断するのか決めましょう。 特定のセルに 表紙 と入っているとか、シート名が 表紙 になっているとか? 表紙以外のシートのコレクションというのは、自動的には作成できないので、For Each sht In WorkSheets 等で処理するシートを順次切り替えながら、決めた基準に合っていれば表紙なのでクリアしない,それ以外なら特定範囲をクリアというようにすればいいと思います。

siekana
質問者

お礼

ご回答ありがとうございました。これからも勉強させて下さい。

関連するQ&A

  • エクセルのクリアボタン

    セルの1つにクリアボタンを作ってそのボタンを押したらシート内の値がすべてクリアされるという機能はありますか? もしございましたら、作成方法を教えてください。

  • Excel VBAで保護されていないセルのクリアー

    こんにちは。 Excel2002を使用しております。 例えば、A1:D20の範囲にいくつか保護されて いないセルがあるのですが、保護されていな いセルの値のみをクリアーすることは可能で しょうか? ExcelのVBAは素人ですが、よろしくお願い いたします。

  • エクセル ボタンのVBA 

    印刷のボタンを作成しました。 原本シートに書き込んで終了した時に保存ボタンを押したら シート名を記載して保存するVBAが一個あります それとは別に印刷ボタンを作成したいのですが 原本シートの表には未記入の場所には条件式でセルに色を つける条件を付けてます。 印刷ボタンを押した時 全部のセルの色を白色に戻し指定した範囲の部分を印刷するボタンを作れないでしょうか? 例 A1:K73まで印刷するなど

  • VBA: UsedRange.Clearでクリア?

    こんにちは。 VBAでシート上のデータを完全にクリアする方法について質問です。 VBAで様々な処理をした結果を「results」というシートに書き出しているとします。 上記の処理をする前に、一旦書き出し用シートをまっさらにするために、以下のコードを実行しています。 ThisWorkbook.Worksheets(resultSheetName).UsedRange.Clear 私の理解している範囲では、これで「results」シートのデータは、完全に消去されている筈なのですが、VBAの処理を実行するたびにブックのファイルサイズが増えていってしまうという不思議な現象に悩まされています。 例えば、処理の実行前は、ファイルサイズが約45KBだとします。 これが実行後は、1300KB程度まで増えます。 ここで、上記の「UsedRange.Clear」の処理を実行すると、250KB程度までファイルサイズが落ちますが、2回目の処理をするとサイズが1500KB程度になります。 以降、前回の結果を「クリア => 処理 => 書き出し」という処理を繰り返すたびに、ファイルサイズが200~300KBずつ増えていってしまうのです。 不思議なのは、上記の「UsedRange.Clear」のかわりに、通常のEXCEL操作で、ワークシート左上(「A」と「1」の間にある)の三角形をクリックして、すべてのセルを選択した上で、「クリア => すべてをクリア」を実行すると、ファイルサイズが45KBに戻るのです。 「UsedRange.Clear」と、手作業の「クリア => すべてをクリア」は、同じことではないのでしょうか? 以下のようなことも試みてみましたが、処理が遅い上に、ファイルサイズ的にはもっとひどいことになってしまいました。 ThisWorkbook.Worksheets(resultSheetName).Range("A1").Resize(65536, 256).Clear このままでは、処理を実行するたびにファイルが重くなってしまって、ツールとしてつかいものになりません。 通常のEXCEL操作(手作業)で「すべてのセルを選択(左上三角クリック)」した上で「クリア => すべてをクリア」と同じ結果を得るには、どのようにしたらよりでしょうか。

  • Excel VBA ボタンを非アクティブにするには

    Excel VBAにおいて、sheet上に製作したコマンドボタンを表示したり、非表示にしたりするコードはわかるのですが。ツールバーに作成したボタンを表示したり、非表示にしたりするコードがわかりません。ご存知でしたら御教授下さい。よろしくお願いします

  • Excel VBAでグローバルな変数はどこで宣言すべきか?

    Excel VBAについての質問です(もしかするとExcelに限った話ではないかもしれません)。 宣言セクションで変数の宣言を行うとき、Publicステートメントをつけた場合の適用範囲(グローバルな範囲)がわかりません。 これは、Sheet、ThisWorkbook、標準モジュールなど、それぞれの宣言セクションの場合で違うのでしょうか? また、宣言が有効になるタイミングも違うのでしょうか? ネットで調べたり、本で調べたのですが、私の理解が不足しているのか、矛盾して書かれているように思います。 一方では全てでグローバルにあるように書かれているように思え、一方ではグローバルになる範囲が違うとかかれているように思うのです。 試してみてもいいのですが、確証がもてないままこれから使い続けるのは気持ち悪いので・・・。 ご回答いただけると幸いです。よろしくお願いします。

  • VBAのセルのClearについて

    VBA超初心者で、困っていることがあります;; たとえば、プログラムを実行したら、セルの「A1~D3」の範囲をクリアするという物があったとして、 その他の条件が以下のようになっています。 (1)クリアしても、セル内の数式を保持 (2)クリア対象のセルの罫線は残す 私は、以下のように記述したのですが、数式は残るのですが罫線が残りませんでした。 Sheets("シート名").Range("A1:D3").ClearFormats 数式を保持し、罫線を残すようにするには、どのような記述をすれば良いのでしょうか。 以上、よろしくお願いいたします。

  • エクセルVBA 検索クリア

    こんにちは! なかなか思うようには行かず… ご教示頂けませんでしょうか? エクセルのSheet内の様々なセルに文字や数値が混在しているものがあります。    A  B  C  D  E 1  35  〇  0  3名  30 2  20      0  0名  25 3  25  〇  3   名    5 4  13  〇  1  10名  10 5  20  ×  0   名   6 このような表の中のB5の"×"だけクリアする C1、C2、C5の"0"だけクリアする D3、D5の"名"だけクリアする というように該当文字or数字を完全一致したもののみクリア Sheet内を検索し、終了したら次の条件を検索というように、 複数の条件で行いたいのですが、どのようにすれば良いかがわかりません… 関数でもできるような気がしますが、他にも沢山のファイルがあり、毎回同じように整理をしなければならないので、VBAでできればと考えております。 どなたかお分かりの方、お教え下さいm(__)m よろしくお願いします!

  • エクセルVBAで出来ますか??

    はじめまして。 私の質問を読んで下さりありがとうございます。 上司にエクセルで少々複雑な?仕組みを作るように指示されたのですが、私自身はエクセルに詳しくはなく、社内にも詳しい人がいなくて困っています。 「Excel VBA パーフェクトマスター」という本を購入して勉強を始めたのですが、あまりに情報が多すぎてどこを参考にすればよいのかすら分かりません・・・。 来週末までに作らないといけないため休日返上でお仕事しながら勉強していますが、さっぱり分からなくて泣きそうです・・。 エクセルVBAに詳しくて親切な方がいらっしゃいましたら、無理のない範囲で構いませんので、どうか教えて頂けないでしょうか。宜しくお願い致します。 前置きが長くなってしまいましたが、具体的には以下のような処理はどうすれば良いのかが分かりません。 (1) 「Sheet1」のセル[A2]をダブルクリックすると「Sheet3」が表示される。 (2) 「Sheet3」のセル[D5]をダブルクリックすると「Sheet2」のセル[C2]の値(文字か数字)が「Sheet1」のセル[A2]と「Sheet4」のセル[B5]に表示され、更に「Sheet5」のセル[F10]の数値が「Sheet1」のセル[N5]に表示される。 (3) 上記の一連の処理が完了すると「Sheet1」が表示される。(「Sheet1の画面に戻る) 以上のような処理を複数組み合わせればできそうなのですが、このような事はエクセルVBAで出来るでしょうか? (私には出来るのか出来ないのかすら分かりません。命令した上司も分かってないと思います。) 出来るか出来ないかだけでも結構なので、どうか教えてください。 もし可能なら、具体的なアドバイスを頂けると、とても助かります。 どうか宜しくお願い致します。

  • エクセルで複数のシートのクリアをしたいです

    エクセルで複数のシートの、それぞれのデータ(セルの範囲)を一括でクリアできるようマクロを作成したいです。 全くの初心者で何回か頑張っていますが、「インデックスが有効範囲に・・・」や「構文エラー」などが出てうまくいきません(TT) アドバイスをお願いいたします。。。

専門家に質問してみよう