2012-07-12 370 views
2

我無法弄清楚爲什麼VBA在我這裏大喊大叫。非常簡單的代碼,只有一個if語句涉及,它顯然有一個「開始」如果和匹配的結束如果。我是一名VB.NET開發人員,所以它可能在我缺少的語法上有所不同。Excel VBA「End If without block If」 - VBA錯誤

Sub splitter() 
    Dim line() As String 
    Dim rng As Range 
    Dim row As Range 
    Dim cell As Range 
     For Each row In rng.Rows 
     If row.Value <> "" Then 
      line = Split(Range(row, 1), ",") 
      Select Case line(0) 
       Case "Desktop" 
        Range(row, 8).Value = "Desktop" 
       Case "Laptop" 
        Range(row, 8).Value = "Laptop" 
       Case "Server" 
        Range(row, 8).Value = "Server" 
       Case Else 
        Range(row, 8).Value = "N/A" 
     End If 
     Next 
    End Sub 

具體地,最終的結果是,這將填充「子女」下拉列表(範圍(行,8))的基礎上從「父」所作的選擇下拉列表(範圍(行,1))。因爲這個問題會出現,所以我使用VBA來做這件事的原因是我可以利用Split()函數來完成Parent下拉列表中的項目,例如。 「桌面,戴爾,745」。另外,我是一個比Excel開發人員更好的程序員。

回答

8

你的SELECT語句需要一個結尾:

Select Case line(0) 
    Case "Desktop" 
     Range(row, 8).Value = "Desktop" 
    Case "Laptop" 
     Range(row, 8).Value = "Laptop" 
    Case "Server" 
     Range(row, 8).Value = "Server" 
    Case Else 
     Range(row, 8).Value = "N/A" 
End Select 
+0

謝謝主席先生!將投票作爲答案。但是,隨着這種變化,我得到運行時錯誤'91':對象變量或塊變量未設置。是否所有Dim'd變量都必須設置爲某個(或「Nothing」)? – 2012-07-12 20:30:43

+0

沒關係,我看到了這個問題。我需要設置我的範圍。謝謝! – 2012-07-12 20:34:34