2017-05-23 90 views
0

我有一個子查找空單元格,如果單元格不爲空,它會檢查合併的單元格是否爲空。它只有在知道MergeCells爲真後纔會調用MergeArea。所以我不知道爲什麼會有錯誤。這個錯誤取決於範圍 - 如果範圍內沒有合併的單元格,它會很好。調用MergeArea時無效的過程調用或參數

Sub hide2() 
     Application.ScreenUpdating = False 
     Dim wRange As Range 
     Set wRange = Range("B23:P36") 

     Dim k As Integer 

     Dim cellFirst As Range 

     For Each cell In wRange 
      If IsEmpty(cell) Then 
       k = k + 1 
      ElseIf cell.MergeCells Then 
       With cell.MergeArea 
        Set cellFirst = cell.MergeArea(Cells(1, 1)) 
        If IsEmpty(cellFirst) Then 
         k = k + 1 
        End If 
       End With 
      End If 
     Next 
     MsgBox (k) 
End Sub 
+0

你沒有資格一工作表中的代碼。您確定該代碼正在您希望運行的工作表上運行。我運行了代碼,它對我很好。 –

回答

0

cell.MergeArea(Cells(1, 1))不會爲您提供MergeArea中的第一個單元格。更改以下:

With cell.MergeArea 
    Set cellFirst = cell.MergeArea(Cells(1, 1)) 
    If IsEmpty(cellFirst) Then 
     k = k + 1 
    End If 
End With 

到:

With cell.MergeArea 
    Set cellFirst = .Cells(1, 1) 
    If IsEmpty(cellFirst) Then 
     k = k + 1 
    End If 
End With 

或者你可以用WithEnd WithSet婷做掉的範圍內,在所有的,只是使用

If IsEmpty(cell.MergeArea.Cells(1, 1)) Then 
    k = k + 1 
End If 
相關問題