2013-12-09 53 views
3

是的,我是VBA無能。只是學習,我需要有人來看這個,並指出我在正確的方向。我想爲一系列單元格寫一個if語句。我希望宏查看每個單元格,如果單元格爲0,清除單元格,如果單元格爲<> 0,則不執行任何操作,查看下一個單元格。試圖瞭解如何使用某些參數編寫if then elseif語句

這是我可憐的嘗試。

Sub MACRO6() 
    Dim VM As String 
    VM = Range("D29:E43") 
    Sheets("10").Select 
    For Each VM In Range 
     If cell = 0 Then ClearContents 
     ElseIf cell <> 0 Then 
     End If 
    Next 
End Sub 

回答

3

您的ElseIf是不必要的。它默認不會做任何事情。只要刪除該行。由於您的If ... Then位於同一行,因此您也不需要End If並應將其刪除。

你想要的東西,像下面的(從this example改動):

Sub ClearZero() 
    For Each c In Worksheets("10").Range("D29:E43").Cells 
     If c.Value = 0 Then c.Value = "" 
    Next 
End Sub 
+0

版,你是對的,那些都不需要。但是,在刪除它們之後,我的宏並沒有達到預期的效果(它縈繞我的眉毛)。你有什麼建議嗎? –

+0

不確定這是什麼意思......它做了什麼? –

+1

如果單元格= 0,它沒有清除內容。 –

3

事情是這樣的:

  1. 你有兩個範圍與由D29:E43規定的範圍內工作(rng1以下),然後循環遍歷此範圍內的每個單元格(rng2
  2. 請注意,rng1已直接參考Sheet 10以確保其上運行的合適的片材(和不需要該薄片將被選擇)
  3. 您需要關於

代碼指定一個範圍來ClearContents

Sub MACRO6() 
Dim rng1 As Range 
Dim rng2 As Range 
Set rng1 = Sheets("10").Range("D29:E43") 
For Each rng2 In rng1 
    If rng2.Value = 0 Then rng2.ClearContents 
Next 
End Sub 
+1

+ 1回答的問題+地址其他問題:) –

+0

在旁註:'。替換'將是一個更好的選擇,我猜:) –

+0

是的 - 雖然這是理解,它可能涉及'清除'而不是'ClearContents'我雖然值得堅持OP的邏輯。 – brettdj