• ベストアンサー

マクロの質問ですが、複数有るシートの中の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