2013-10-04 26 views
0

我是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語句或者如何在代碼中使用它的?

回答

2

該塊爲我編譯。請測試它。我始終在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

0

不是:

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

使用:

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

有可能是在你的代碼的其他問題。

+0

我在添加了Set之後然後才準備好了 - 也許我已經開始瞭解這一切。感謝您的答覆。 – user2162384

1

使用

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

同樣爲 「$ A $ 5」。

「$ A $ 5」只是一個字符串,您將字符串與字符串進行比較。你想要的是一個範圍對象

編輯

關於你得到,你必須使用Then

的語法(Hiten004後讓我意識到這一點)

If <Cond> Then 
ElseIF <Cond> Then 
End If 
錯誤
+0

這裏也很有幫助。它現在完美。謝謝。 – user2162384