2017-10-20 6 views
0

セルを消去する特定のセル/範囲に0を入力すると、マクロが必要になります。入力時にセルから0を削除する

私はこの

Sub RemoveZeros() 
'to remove 0 values that may be a result of a formula or direct entry. 

    For Each cell In Range("A1:D20") 
     If cell.Value = "0" Then cell.Clear 
    Next 

End Sub 

のような簡単なマクロを書いたが、私はそれをクリアするために、私は私の値を入力した後、これを実行する必要があります。 0が入力された場合、セルを消去したいと思います。これはどうすればいいですか?

+2

オープン 'ThisWorkbook'モジュールがで'ます。Private Sub Workbook_SheetChange(オブジェクトとしてByVal Shを、ByValの対象を範囲) 'と呼ばれるサブを作成し、あなたのコードを入力して解決策を見つけましたそこ。シート上のセルの値を変更すると、コードが実行されます。 –

+0

また、セルを選択し、最終結果が空のセルであれば 'Delete'を押すのは簡単でしょうか? VBAは必要ありません。 –

+0

そして、 'Target'変数を使用してください:' If Target Like "* 0 *" Then Target.Clear'または 'If Target = 0 Then Target.Clear' – danieltakeshi

答えて

1

私は

Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False 
     If Target.Value = 0 Then Target.ClearContents 
    Application.EnableEvents = True 
End Sub 

おかげ

+0

うん、それはそれを行うでしょう。 A1:D20の範囲だけでなく、そのシート上のどのセルでも機能します。範囲を制限したい場合は、3行のコードを 'IF ... END IF'文で囲みます:'交差しない場合(対象、範囲( "A1:D20"))は何もない ' –

+0

ありがとうおとこ。この特定の例では、ゼロに変更したいセルが1つあります。しかし、このセルはマージされます。どのように私はそれを回りますか? – FrankWhite

+1

'Target.MergeArea.ClearContents'を使うことができます。これは、結合されていない単一のセルであっても機能します。もしそれが単一のセルであれば、 'In Target 'の全体ではなく' If Target.Address = "$ E $ 10" Then'を使うこともできます。 –

関連する問題