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
不是:
If "$A$5" = "Company1" Then Rng = ThisWorkbook.Names("1Brokers").RefersToRange
使用:
If "$A$5" = "Company1" Then Set Rng = ThisWorkbook.Names("1Brokers").RefersToRange
有可能是在你的代码的其他问题。
我在添加了Set之后然后才准备好了 - 也许我已经开始了解这一切。感谢您的答复。 – user2162384
使用
If Range("$A$5").Value = "Company1"..
同样为 “$ A $ 5”。
“$ A $ 5”只是一个字符串,您将字符串与字符串进行比较。你想要的是一个范围对象
编辑
关于你得到,你必须使用Then
的语法(Hiten004后让我意识到这一点)
If <Cond> Then
ElseIF <Cond> Then
End If
错误
这里也很有帮助。它现在完美。谢谢。 – user2162384
+ 1为了赶上'如果然后'我正在忙着解释别的东西(这也是很重要的) –
将'Set'关键字添加到所有'Rng'赋值语句中:) –
谢谢你 - 我在然后添加开始集。 – user2162384