Complie错误 - 否则没有如果VBA

问题描述:

我是vba的新手,所以请原谅我的无知。我创建了一个将通过一个下拉列表中运行,并打印在下拉列表中每个名字的宏 - 和它的作品:Complie错误 - 否则没有如果VBA

Sub PrintAll() 

    Dim Cell As Range 
    Dim Rng As Range 
    Dim Wks As Worksheet 

    Set Wks = Worksheets("PRINT PAGE") 
    Set Rng = ThisWorkbook.Names("Brokers").RefersToRange 


    For Each Cell In Rng 
    If Cell <> "" Then 
     Wks.Range("$B$5").Value = Cell.Text 
     Wks.PrintOut 
    End If 
    Next Cell 

End Sub 

但是,该工作簿具有多个工作表进行读取,因此我需要的VBA从读多个范围,所以我想这

Sub PrintAll() 

    Dim Cell As Range 
    Dim Cell2 As Range 
    Dim Rng As Range 
    Dim Wks As Worksheet 

Set Wks = Worksheets("PRINT PAGE") 

If "$A$5" = "Company1" Then Rng = ThisWorkbook.Names("1Brokers").RefersToRange 
ElseIf "$A$5" = "Company2" Then Rng = ThisWorkbook.Names("2Brokers").RefersToRange 
Else: Set Rng = ThisWorkbook.Names("3Brokers").RefersToRange 
End If 

    For Each Cell In Rng 
    If Cell <> "" Then 
     Wks.Range("$B$5").Value = Cell.Text 
     Wks.PrintOut 
    End If 
    Next Cell 

End Sub 

问题是我不断收到“编译错误否则没有如果” IF语句的。我是如何设置If语句或者如何在代码中使用它的?

该块为我编译。请测试它。我始终在then之后开始设置if

Sub PrintAll() 

    Dim Cell As Range 
    Dim Cell2 As Range 
    Dim Rng As Range 
    Dim Wks As Worksheet 

'Set Wks = Worksheets("PRINT PAGE") 

If "$A$5" = "Company1" Then 
    Rng = ThisWorkbook.Names("1Brokers").RefersToRange 
ElseIf "$A$5" = "Company2" Then 
    Rng = ThisWorkbook.Names("2Brokers").RefersToRange 
Else 
    Set Rng = ThisWorkbook.Names("3Brokers").RefersToRange 
End If 

    For Each Cell In Rng 
    If Cell <> "" Then 
     Wks.Range("$B$5").Value = Cell.Text 
     Wks.PrintOut 
    End If 
    Next Cell 

End Sub 
+0

+ 1为了赶上'如果然后'我正在忙着解释别的东西(这也是很重要的) –

+1

将'Set'关键字添加到所有'Rng'赋值语句中:) –

+0

谢谢你 - 我在然后添加开始集。 – user2162384

不是:

If "$A$5" = "Company1" Then Rng = ThisWorkbook.Names("1Brokers").RefersToRange 

使用:

If "$A$5" = "Company1" Then Set Rng = ThisWorkbook.Names("1Brokers").RefersToRange 

有可能是在你的代码的其他问题。

+0

我在添加了Set之后然后才准备好了 - 也许我已经开始了解这一切。感谢您的答复。 – user2162384

使用

If Range("$A$5").Value = "Company1".. 

同样为 “$ A $ 5”。

“$ A $ 5”只是一个字符串,您将字符串与字符串进行比较。你想要的是一个范围对象

编辑

关于你得到,你必须使用Then

的语法(Hiten004后让我意识到这一点)

If <Cond> Then 
ElseIF <Cond> Then 
End If 
错误
+0

这里也很有帮助。它现在完美。谢谢。 – user2162384