2017-05-23 39 views
0

我不斷收到此錯誤,但無法弄清楚爲什麼。它看起來像遵守所有規則。vba結束如果沒有塊如果

我讀的結構如下 - If - > ElseIf - > End If。但是在這裏我得到一個錯誤,儘管它們都是一樣的。

Sub hide() 
     Application.ScreenUpdating = False 
     Dim wRange As Range 
     Set wRange = Range("A5:B10") 

     Dim mergedRows As Integer 
     Dim mergedColumns As Integer 

     Dim cellFirst As Range 

     For Each cell In wRange 
      If IsEmpty(cell) Then 
       cell.EntireRow.Hidden = True 
      ElseIf cell.MergeCells Then 
       mergeRows = cell.MergeArea.Rows.Count 
       mergeColumns = cell.MergeArea.Columns.Count 
       With cell.MergeArea 
        Set cellFirst = cell.MergeArea(Cells(1, 1)) 
        If IsEmpty(cellFirst) Then 
         cellFirst.EntireRow.Hidden = True 
        End If 
      End If 
     Next 
End Sub 
+3

在最後一個End If之前鍵入'End With'。在這種情況下,錯誤信息是誤導性的,因爲'With'塊是問題,而不是'If',但隨着時間的推移(並且具有良好的縮進練習,就像你所做的那樣),你會發現這些更快,並且知道什麼尋找:) –

+1

@斯科特霍爾茨曼,謝謝!不知道還有沒有完成。你可能會回答,我會接受。 – Ans

+0

你實際上可以刪除'With cell.MergeArea',因爲你永遠不會實現一個合適的With塊。 (你也不需要)。 –

回答

2

您還需要關閉隨着聲明。

With cell.MergeArea 
    Set cellFirst = cell.MergeArea(Cells(1, 1)) 
    If IsEmpty(cellFirst) Then 
     cellFirst.EntireRow.Hidden = True 
    End If 
End With