2016-12-01 4 views
0

複数のワークシートにわたる特定の範囲でvalue = 0のセルをクリアしたいとします。ワークシートの数と名前は、マクロが実行されるたびに異なります。これは私が思いついたものですが、うまくいきません。複数のワークシートのセル範囲のゼロを非特定のワークシート名またはワークシート数で置き換えます。

' 
' REMOVEZERO_KVEMoxyModel Macro 
' 
' 

Sub REMOVEZERO_KVEMoxyModel() 


    Dim ws As Worksheet 
    For Each ws In ActiveWorkbook.Worksheets 
    Call RemoveZeros 


End Sub 

Sub RemoveZeros() 


    For Each cell In Range("I3:I500") 
    If cell.Value = "0" Then cell.Clear 

End Sub 
+0

あなたのコードの残りの部分をアップロードしてください最後に 'Next cell'がありません。最初の 'Sub'で '次のws' –

+0

あなたの助けてくれてありがとう、Shai。私は変更を加えましたが、ワークブックの最初のワークシートでのみ機能しました。それ以上の提案はありますか? 'REMOVEZERO_KVEMoxyModelマクロ ' ' サブREMOVEZERO_KVEMoxyModel()ActiveWorkbook.Worksheetsの各WSワークシート として 薄暗いWS コールRemoveZeros 次WS End Subの サブRemoveZeros() について各セル範囲( "I3:I500") cell.Value = "0" then cell.Clear 次のセル End Sub – Mcurrier

答えて

1

以下のコードを試してください:ActiveWorkbookのすべてのワークシートをループします。この例では、Sheet.Name = "Sheet1"またはSheet.Name = "Sheet2"Select Caseを使用している場合)は、内部に入り、指定したRangeからすべての「0」をクリアします。

コード

Option Explicit 

Sub REMOVEZERO_KVEMoxyModel() 

Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 
    Select Case ws.Name 
     ' only run the clear "0" cells in "Sheet1" and "Sheet2" >> modify according to your needs 
     Case "Sheet1", "Sheet2" 
      Call RemoveZeros(ws) 

    End Select 
Next ws 

End Sub 

Sub RemoveZeros(sht As Worksheet) 

Dim cell As Range 

For Each cell In sht.Range("I3:I500") 
    If cell.Value = "0" Then cell.ClearContents 
Next cell 

End Sub 

編集1:すべてのワークシートのための "0" セル(それが必要ないだとしてSelect Case ws.Nameを削除)をクリア

Sub REMOVEZERO_KVEMoxyModel() 

Dim ws As Worksheet 

For Each ws In ActiveWorkbook.Worksheets 
    Call RemoveZeros(ws)    
Next ws 

End Sub 
+0

コードをありがとう。 Excelスプレッドシートはアプリケーションからエクスポートされ、シート名とシート数はマクロを使用する必要があるたびに変更されます。すべてのワークシートを選択する方法はありますか?ご協力いただきありがとうございます。 – Mcurrier

+0

@Mcurrier下記の編集コードを参照 –

+0

これは完全に機能しました。ご協力ありがとうございました。あなたは私に多くの時間を救ってくれました。 – Mcurrier