2017-02-02 13 views
1

シート4〜9、次に12と13のセルからすべての画像(画像を含む)を消去しようとしています。次のコードがありますが、シート3-9 12-15で、私は理由を知らない。あらかじめ定義された範囲のオフセット/サイズ変更

どのような考えですか?

Sub ClearContents() 
Dim i As Integer 
For i = 4 To 9 And 12 And 13 
Sheets(i).Cells.Clear 
Sheets(i).Pictures.Delete 

Next i 
+0

を私はそれがhであるべきだと思ったでしょうaveはシート4から8にのみ作用した( '9 And 12 And 13'は '8'に等しいので)。 – YowE3K

+0

誰かがその点を得られない場合、@ YowE3Kはこれらの3つの数字のビットごとのANDを参照しています。これは誤った演算子の優先順位のためにエラーが発生したことを意味します。それは私の最初の考えでもありました... –

+0

@ YowE3K私はスキミングによって集めたものから、シート名の数値接尾辞ではなく、UIの現在の順序に従っている可能性があります。 ?現在、そのシーケンスから欠落している数字は、合計の差異を説明している可能性がありますか? –

答えて

2

以下のコードを試してみてください。

Option Explicit 

Sub ClearContents() 

    Dim i As Long 
    Dim Sht As Worksheet 
    Dim PicObj As Object 

    ' loop through all worksheets in your workbook 
    For Each Sht In ThisWorkbook.Sheets 
     Select Case Sht.Index 
      Case 4 To 9, 12, 13 
       Sht.Cells.Clear 

       ' loop through all shapes in your worksheet and delete them all 
       For Each PicObj In Sht.Shapes 
        PicObj.Delete 
       Next PicObj 

      Case Else '<-- for future cases, if you'll need 
       'do nothing 
     End Select 
    Next Sht 

End Sub 
2

代わりにそのインデックスのシート名を使用するように編集

あなたはSheets(array)Sheetsのコレクションを使用することができます

Option Explicit 

Sub ClearContents() 
    Dim ws As Worksheet 

    For Each ws In ThisWorkbook.Sheets(Array("Sheet4", "Sheet5", "Sheet6", "Sheet7", "Sheet8", "Sheet9", "Sheet12", "Sheet13")) ' loop through wanted worksheets 
     ws.Cells.Clear 
     ws.Pictures.Delete 
    Next 
End Sub 
+0

これは本当に素敵で短いバージョンですので、うまくいけばそれを動作させることができます。私はそれを試しましたが、今のところそれは以前と同じシートをクリアしています。もし私のワークブックにどのように配置されているかという点で、私のシートの順番で拾い上げることができるのかどうか分かりません。右から左へ:シート1、シート10、シート11、シート12、シート13、シート14、シート15、シート2、シート3、シート4、シート5、シート6、シート7、シート8、シート9 – user7431724

+0

私はそれをもう一度試して、実際のワークシート番号ではなく、ワークシートの順序を使用します。 – user7431724

+0

あなたのコードでは、Sheets(i)を私が数字であるように使ったので、これも私が使ったものです。そしてそれはシート "オーダー"を使用します。名前を使用する必要がある場合は、ThisWorkbook.Sheets(Array( "Sheet4"、 "Sheet5"、 "Sheet6"、 "Sheet7"、 "Sheet8"、 "Sheet9"、 "Sheet12"、 "Sheet13"))を使用します。 – user3598756

関連する問題