2013-12-09 23 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