• ベストアンサー

マクロの質問ですが、複数有るシートの中のSheet1~Sheet54の

マクロの質問ですが、複数有るシートの中のSheet1~Sheet54のセルC14:E14,E12,C16:E46 だけ消したいのですが、どう書けばよろしいですか、シート名Sheetから、始まる物と別に 日本語のシート名の物がありますが  よろしくお願いします。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

方法はいつくもありますが、、、 '----------------------------------------- Sub Test()  Dim i As Integer  For i = 1 To Sheets.Count    If Sheets(i).Name Like "Sheet*" Then      Sheets(i).Range("C14:E14,E12,C16:E46").ClearContents    End If  Next i End Sub '---------------------------------------- また、Sheetを検出する部分は次のように シート名の左から5桁が、"Sheet”だったらというふうにもかけます   If Left(Sheets(i).Name, 5) = "Sheet" Then 以上です。  

07535373
質問者

お礼

なるほど 文字の桁数での考えもあるのですね。 考えもつきませんでした。 教えていただいた構文で 無事に解決しました。 ありがとうございました。

その他の回答 (4)

  • muunoy
  • ベストアンサー率38% (70/183)
回答No.5

ANo.4を書いたのですが、ANo.3と内容がちょっとかぶっちゃいました。 誤変換の訂正です。 >個別に各方法 →個別に書く方法 重ね重ねすみません。

07535373
質問者

お礼

何度もありがとうございました。 皆さまのおかげで解決しました。 感謝してます。

  • muunoy
  • ベストアンサー率38% (70/183)
回答No.4

内容を確認させてください。 > セルC14:E14,E12,C16:E46だけ消したい とのことですが、セルの削除ではなく、値の削除だけでしょうか? 書式設定やコメントはないでしょうか? >複数有るシートの中のSheet1~Sheet54 とのことなので、ワークシートオブジェクトと範囲の指定をして、 CleaContentsすればいいのでしょう。 が、特定できるのはSheetObjectがSheet1~Sheet54で シート名(.Name)やシート並び順(.Index)には、ルールはないと読めたのですが、違いますか? ちなみに、下のループだと、Index順になってしまうので…。 Sheet1~Sheet54を個別に各方法しかないかも。 Dim All As Object, S As Object Set All = Sheets For Each S In All (省略) Next S ちゃんとした回答になってなくてすみません。参考まで。

07535373
質問者

お礼

色々考えていただき ありがとうございます。 皆さんのおかげで、解決できました。 ありがとう 感謝です。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

シートを順番に見て行って、シート名が「Sheet1」と「Sheet54」に挟まれたシート(Sheet1とSheet54も含む)の指定したセル範囲をクリアします。 Sheet1~Sheet54の間のシートはシート名が何であろうと対象にします。 Sub Sample()   Dim ws As Object   Dim nFlag As Integer      nFlag = 0   For Each ws In Sheets     If ws.Name = "Sheet1" Then nFlag = 1     If nFlag = 1 Then ws.Range("C14:E14,E12,C16:E46").ClearContents     If ws.Name = "Sheet54" Then Exit For   Next End Sub

07535373
質問者

お礼

シートを挟む考え方もあるのですね。 参考になりました。 皆さんのおかげで、無事解決出来ました。 ありがとうございます。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

Sub Sheet_DelCell() For Each sheet_name In Worksheets MsgBox sheet_name.Name sheet_name.Activate Range("C14").ClearContents Range("E14").ClearContents Range("E12").ClearContents Range("C16").ClearContents Range("E46").ClearContents Next End Sub

07535373
質問者

お礼

ありがとうございます。 皆さんのおかげで、 解決しました。 スッキリです!。

関連するQ&A

  • エクセル マクロでシートをデスクトップに保存する

    ファイルにある複数のシートの中から、Bシートだけを抜き出してデスクトップに保存するマクロがわかりません。マクロ記録でコードの確認はできますが、 保存先がC\user\自分のユーザー名¥Desktopとなっているので、他の人に配布して別のパソコンで使用できるものでしょうか。 理想としては、 複数あるシートの中からひとつだけを抜き出して、デスクトップに保存。 抜き出したシートの名前は、指定してあるセルに入力された単語。 抜き出したシートを開いた時に「更新 更新しない」のリンクのメッセージが表示されない。 このようにしたいです。

  • 複数のセルをコピーし、別シートの任意のセルへペーストをするためのマクロ

    ブック(1)のシート(1)にある複数の離れたセル(A1,B2,C3,D4:F4)をコピーし、別ブックのシート(1)のセル(E1,F2,G3,B4:F4)へリンク貼り付けを実行するためのマクロを教えてください。 なお、ブック(1)とブック(2)は同一階層に置いてあります。 このブック(1)とブック(2)の表のフォーマットが違っており、ブック(1)のセルA1をコピーして ブック(2)のセルE1へ貼り付けし、 また同様にブック(1)のセルB2をコピーして ブック(2)のセルF2へ貼り付けをしていきます。 (A1→E1、B2→F2、C3→G3、D4:F4→B4:F4 へ貼り付ける) この作業をマクロを使って自動実行させたいと思っています。 御手数お掛け致しますが、何卒よろしくお願いいたします。

  • マクロの中に別なマクロを組み込むには

    よろしくお願いします。 excel2003でマクロを作っています。 Sheet2のC1、D1、E1にセルを赤く塗りつぶす、赤と入力、カラーインデックスの番号を入力するというマクロを作りボタンに割り当てたいと思います。 全部で色が17色あるので、マクロを17個作らなければならないと思うのですが、なるべく簡略化したいと思います。 そこで下記の「赤」というマクロの中に「色」というマクロを取り込みたいのですが、うまくできませんでした。 どうかマクロの中にマクロを取り込む方法を教えてください。 もし下記のマクロがもっとスマートに出来るようでしたら、それも教えていただけると嬉しいです。 VBAは初心者ですがよろしくお願いします。 Sub 赤() irobango = 3 ironamae = "赤" End Sub Sub 色() Worksheets("Sheet2").Range("C1").Select With Selection.Interior .ColorIndex = irobango .Pattern = xlSolid End With Worksheets("Sheet2").Range("D1").Value = ironamae Worksheets("Sheet2").Range("E1").Value = irobango End Sub

  • EXCELのシートのマクロ操作について

    EXCELについて質問がありまして、よろしくお願いします。 複数のシートがあるブックがあり、それを、それぞれシートごとに別のブックにしたいと思っています。 マクロやVBAなどを使って簡単に出来るものでしょうか? マクロ集などのサイトを探してみましたが、上手く見つけることができませんでした。 シート名をブック名として引き継いで保存できればベターだと思っております。それが出来なくてもブックとして起こせれば大丈夫です。 何かわかられましたらお教えいただけますと幸いです。 どうぞよろしくお願いします。

  • あるシートのセルを、複数のシートにコピーするマクロ

    やりたい事としては、シート名「Sample」で指定した範囲のセルを、ブック内の複数シート(※)へコピーしたいです。 ※ 他にも同じ構成のブックがあり、そこでも汎用として使えるマクロが必要となっています。 各ブックでは、「Sample」というシート名は共通ですが、コピー先の複数シートのシート名は異なっています。但し、共通している部分としては、コピー先のシートを「Start」と「End」で挟んでいます。 シートの順序としては、  「Start」 「1」 「2」 「3」 「End」 「Sample」 のような構成で、各シートごとに1~3のシート名がばらばらです。 「Start」と「End」シートを活用して、シート名を指定せずにコピーする方法をご教示頂ければと思います。 宜しくお願い致します。

  • 複数あるブックの特定シートの特定範囲を1つにしたい

    EXCEL2010を使用しています。 あるフォルダに格納されている複数のブックの、特定シートを、1つのシートにまとめたいです。 複数のブックの作りは同じです。 1つのブックに、複数シートがあり、"(配置)"というシートだけを、新規のシートにまとめたいです。 <今ある各ブック> ファイル名は、2014年度特定措置_●●.xlsで、●●だけ、ブック名が違います。 シート名が"(配置)"です。 c3セルに部署名が入っています。 b4セルからe10セルまで数式が入っています。 <行いたいこと> 新規のシートのa列に、各ブックにあるc3セルの部署名を持ってきたい。 b列からe列に、各ブックにあるb4セルからe10セルまでの数式を値張りし、取り込みたい。 以上です。 つたない説明で恐縮ですが、大変困っております。 どうか、ご回答の程、どうぞよろしくお願いいたします。

  • シートが変わるとマクロが働かない

    記録式マクロでセルに名前を付けるものを作りました。 しかし、その時のシート名が記録されたため、他のシートで使えません。 Sub Macro1() ActiveWorkbook.Names.Add Name:="参照A", RefersToR1C1:="='2-28'!R1C8" End Sub シート名が「2-28」でないと、「3-01」などだと使えません。。 そのとき開いているシートどれにでも通用させるにはどう書き換えるんでしょうか?

  • EXCELで参照シート名含む計算式の変更マクロ

    マクロを作成しておりますして、わかりづらいか質問もしれませんが宜しくお願いします。 (1)マクロを配布し先方(複数拠点)で持っているブックに変更をかけ  たい。 (2)そのブック内には複数シートがあり、計算式で他シートを参照して  いる。 (3)その計算式を変更かけたい。が(2)でいう参照シートのシート名を各  拠点にて変更しているので、計算式も変更後のシート名が入って  いる。 例えば、 シート1のA1セルに「=(xxxxx)!B1/C5」という式を埋め込みたい。    ※(xxxxx)はシート名。 でも、(xxxxx)のシート名は拠点によってシート名がことなることが 問題。尚、シート名以降の計算式は全拠点共通。 そこで、こんなことがやれればのイメージですが イメージ1: シート1の他のセル(D1)で(xxxxx)と同じシート名を参照している 式が必ず存在している。拠点毎にシート名は異なるがセル(D1)の 場所は共通。 このセル(D1)の式からシート名を抽出し、上の「=(xxxxx)!B1/C5」 の(xxxxx)に入れて、シート1のA1セルにこの計算式を記載する マクロを作る イメージ2: もし「=(xxxxx)!B1/C5」の(xxxxx)部分に仮名称を入れたものを マクロでシート1のA1セルに書き込んだあと、各拠点にて(xxxxx) →それぞれ拠点で使っているシート名に置換する ような方法があ るか?(存在しない参照シート名のまま書き込むとファイル指定の ダイアログが開くので、開かないような汎用的な記述を一旦仮置き できないか?) 以上宜しくお願いしたします

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • 全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えて

    全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えてください。 Worksheets.Select ActiveSheet.Name = Range("A1").Value ではダメなんですね… 記録マクロ以上のことはほとんど何もわからない、マクロ初心者です。 条件としては、  ・シート数はその都度変わる  ・シート名にしたいセル番地は決まっている です。 具体的には、「請求書」などの決まったフォーマットで作成された複数のシートがあり、 決まったセルに入力された「宛名」をそれぞれのシート名にしたい というような場合です。 また、同じ「宛名」で複数のシート名があったときに備えて、 新しいシート名の前に数字を振りたいです。 例) Sheet 1 → 1田中様 Sheet 2 → 2佐藤様 Sheet 3 → 3山田様 Sheet 4 → 4鈴木様 Sheet 5 → 5山田様 のように。 数字は識別できればいいので(エラーがでなければいいので)、なんでも構いません。 シートに順に番号を振るのでも、元のシート名の一番右を取るのでもいいです。 (そんなマクロがあるのかもわからないのですが) 宛名が複数あるものだけ選んで番号を振るのでもいいのですが、大変そうな気がするので・・・ マクロ自体よくわかっていないので、情報が不足しているかもしれませんが、 詳しい方、教えてください。 よろしくお願いいたします。

専門家に質問してみよう