Vba 修复块If无端If错误
我刚刚开始使用宏和VB,但对Excel公式有一些经验。我的问题是我的excel公式变得非常长和复杂,我想VB可以帮助我 我有很多财务数据,我想在专栏中进行分类。我的第一步是将特定公司归类为私人公司或认股权证。我用下面的代码得到了一个“block if without end if”错误。我尝试过各种各样的事情,但没有运气Vba 修复块If无端If错误,vba,excel,if-statement,Vba,Excel,If Statement,我刚刚开始使用宏和VB,但对Excel公式有一些经验。我的问题是我的excel公式变得非常长和复杂,我想VB可以帮助我 我有很多财务数据,我想在专栏中进行分类。我的第一步是将特定公司归类为私人公司或认股权证。我用下面的代码得到了一个“block if without end if”错误。我尝试过各种各样的事情,但没有运气 Range("F2:F400") = "Private Company" Else If Range("A2:A400") = "Company B" Then
Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company B" Then
Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company C" Then
Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company D" Then
Range("F2:F400") = "Warrant"
Else If Range("A2:A400") = "Company E" Then
Range("F2:F400") = "Warrant"
Else If Range("A2:A400") = "Company F" Then
Range("F2:F400") = "Warrant"
End If
End Sub
如果。。。在
Else
子句中结束If,或使用ElseIf
版本(没有空格)。对于前者,您的代码需要是:
If Range("A2:A400") = "Company A" Then
Range("F2:F400") = "Private Company"
Else
If Range("A2:A400") = "Company B" Then
Range("F2:F400") = "Private Company"
Else
If Range("A2:A400") = "Company C" Then
Range("F2:F400") = "Private Company"
Else
If Range("A2:A400") = "Company D" Then
Range("F2:F400") = "Warrant"
Else
If Range("A2:A400") = "Company E" Then
Range("F2:F400") = "Warrant"
Else
If Range("A2:A400") = "Company F" Then
Range("F2:F400") = "Warrant"
End If
End If
End If
End If
End If
End If
为便于阅读,增加了缩进
此外,还需要分别测试“A2:A400”范围内的每个电池。比如:
For Each cell In Range("A2:A400")
If cell.Value = "" Then
Else
...
End If
Next cell
一种更简单的方法可能是创建一个公司名称查找表,然后在电子表格中创建一个VLOOKUP函数,无论是私有的还是担保的。在VBA中,如果是嵌套条件,则是级联的: 试试这个:
If Range("A2:A400") = "Company A" Then
Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company B" Then
Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company C" Then
Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company D" Then
Range("F2:F400") = "Warrant"
ElseIf Range("A2:A400") = "Company E" Then
Range("F2:F400") = "Warrant"
ElseIf Range("A2:A400") = "Company F" Then
Range("F2:F400") = "Warrant"
End If
我还想补充一点,您可以使用(这只是Chipsleten扩展了一点,以便您可以看到它是如何工作的)
这里有一些问题。我认为您可以通过将
ElseIf
更改为ElseIf
来清除块if而不终止if错误。我不知道这是否是你想要的逻辑。此外,您不能将多个单元格的范围(range(“A2:A400”)
)与单个值进行比较。你将得到一个类型不匹配的错误。请不要给我任何评论。对堆栈溢出的评论有时被认为是一件好事
Sub ColumnLoop()
Dim rng As Range
Set rng = Range("A2:A400")
For Each cell In rng
Debug.Print cell.Address
If (cell.Value = "Company A" Or cell.Value = "Company B" Or cell.Value = "Company B") Then
cell.Offset(0, 5).Value = "Private"
Debug.Print cell.Address
Else
cell.Offset(0, 5).Value = "Warrant"
Debug.Print cell.Address
End If
Next cell
End Sub