如果是,您如何制作其他?

时间:2019-01-21 16:19:46

标签: excel vba

我试图检查一个范围内的不同值,然后在另一列中更改一个值,但是每次我这样做都会出错:

  

没有If的其他

thisParameterWillCompletelyChangeYourLife

4 个答案:

答案 0 :(得分:5)

下划线具有误导性:

  If .Range("C" & i).Value = "No Approval Required" Then _
    .Range("F" & i).Value = ""

它看起来像If...Then...End If块语法,但不是。 _行的继续使得逻辑行的代码实际上是这样的:

  If .Range("C" & i).Value = "No Approval Required" Then .Range("F" & i).Value = ""

那是完全合法的。

您可以使用Else子句继续执行相同的逻辑代码行:

  If .Range("C" & i).Value = "No Approval Required" Then .Range("F" & i).Value = "" Else ...

那仍然是合法的。

但是你不能做什么,是这样的:

  If .Range("C" & i).Value = "No Approval Required" Then .Range("F" & i).Value = ""
  Else ....

因为Else属于另一个语法表达式:上面的If语句是完整的;下一个以Else开头的语句必须是非法的,因为它没有If语句。

如果您想在单独的代码行上使用Else语句,则需要切换到 block语法-这意味着Then关键字是{{ 1}}语句结束:

If

答案 1 :(得分:3)

经验


您可以在两种语法结构之一中使用IF语句:

  

一行:

     

If [this] Then [That]

  

多行:

If [This] Then
    [That]
End If

多行代码可让您检查多个If语句或使用ElseIf。请注意,在一种衬纸版本中无法做到这一点:

If [This(1)] Then
    [That1] 
  ElseIf [This(2)] Then
    [That2] 
  ElseIf
    [That3]
End If

实施


您可以将IF语句变成一个衬里,如下所示:

For i = 1 To 3000
    With Sheets("Order Approvers")
      If .Range("C" & i).Value = "No Approval Required" Then .Range("F" & i).Value = ""
    End With
Next i

或者您可以使用如下所示的块版本:

For i = 1 To 3000
    With Sheets("Order Approvers")
      If .Range("C" & i).Value = "No Approval Required" Then 
        .Range("F" & i).Value = ""
      End If
    End With
Next i

或者您可以更新以使用Else语句

For i = 1 To 3000
    With Sheets("Order Approvers")
        If .Range("C" & i).Value = "No Approval Required" Then 
          .Range("F" & i).Value = ""
        ElseIf [What?] Then
            'Do what?
        End If
    End With
Next i

答案 2 :(得分:2)

您在if语句的末尾使用了行继续符package com.tp468.dell.automatedfishpondmonitoringsystem; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; public class MainActivity extends AppCompatActivity { TextView Temperature; DatabaseReference dRef; String status; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Temperature = (TextView)findViewById(R.id.textView); dRef= FirebaseDatabase.getInstance().getReference(); dRef.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { status=dataSnapshot.child("Temperature").getValue().toString(); Temperature.setText(status); } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); } } 。这会将下一条语句直接粘贴到_语句。基本上,它和写作是一样的

If

当您将语句写成这样时,就不能使用If .Range("C" & i).Value = "No Approval Required" Then .Range("F" & i).Value = "" (从技术上讲,可以,但是您必须将其放在同一行中,这是您不想要的... )

如果您还有其他条件要检查,则可以使用Else,对于所有其他情况,可以使用ElseIf。最后,您需要输入Else 所以,只要写

End If

答案 3 :(得分:1)

您需要使用If关闭End If语句。