2013-02-15 128 views
1

我想要做的是遍歷包含工作表名稱的範圍,如果單元格不爲空,則將​​函數的結果添加到count變量中。WorksheetFunction.CountA沒有返回正確的值

所以計數變量應該等於我正在迭代的工作表上的範圍B9:B28中的非空白單元格的數量,但奇怪的是,該值等於我要去的範圍中的非空單元格的數量通過(sheet1!d5:d24)。

我在做什麼錯?下面是我使用的代碼:

For Each c In Worksheets("Sheet1").Range("d5:d24").Cells 
    If Not IsEmpty(c) Then 
     count = count + WorksheetFunction.CountA(c & "!b9:b28") 
    End If 
Next 

我通過第二範圍嘗試的另一種方法來循環,並且如果所述細胞是不爲空,則通過1遞增變量但是這給人一種運行時錯誤13類型不匹配錯誤。這是我現在正在做的:

For Each c In Worksheets("Sheet1").Range("d5:d24") 
    If Not IsEmpty(c) Then 
     For Each c2 In Worksheets(c).Range("b9:b28") 
      If Not IsEmpty(c2) Then 
       'count = count + WorksheetFunction.CountA(c & "!b9:b28") 
       count = count + 1 
      End If 
     Next 
    End If 
Next 

請幫我。提前感謝所有花時間回覆的人。

+3

我認爲你需要提供'了一系列對象,而不是一個字符串.CountA'。嘗試使用'.CountA(Worksheets(c).Range(「B9:B28」))' – 2013-02-15 15:07:34

+1

您使用單元格(作爲範圍對象)並嘗試向其添加地址表示法。當然,這不會工作。按照@PeterAlbert的建議。 – 2013-02-15 15:08:08

+0

感謝您的快速回復傢伙。我試過@彼得艾伯特的解決方案,但它拋出了類型不匹配的錯誤。我提供了字符串,因爲我認爲這些函數在Excel中的功能與VBA相同。 – 2013-02-15 15:18:53

回答

4

基於@Peter阿爾伯特和@Peter L.的意見,終於得到了它的工作。正確的代碼是:

For Each c In Worksheets("Sheet1").Range("d5:d24").Cells 
If Not IsEmpty(c.Value) Then 
    count = count + WorksheetFunction.CountA(c.Value & "!b9:b28") 
End If 
Next 

非常感謝球員:)

+0

我的+1特別適合自學! – 2013-02-15 15:36:07

1

試試這個:

Sub CountColBForColD() 
Dim c As Range 
Dim r As Long 'row counter 
Dim rngB As Range 
Dim rngD As Range 
Dim lookSheet As Worksheet 

Set rngD = Sheets("Sheet1").Range("D5:D24") 
Set rngB = Range("B9:B28") 
r = 1 

For Each c In rngD 
    If Not IsEmpty(c) Then 
     On Error GoTo InvalidSheetName 
     Set lookSheet = Sheets(rngB(r).Value) 
     On Error GoTo 0 
     Count = Count + WorksheetFunction.CountA(_ 
      lookSheet.Range(rngB.Address)) 
      c.Offset(0, 1).Value = Count 
      r = r + 1 
    End If 
NxtC: 
Next 

Exit Sub 

InvalidSheetName: 
Err.Clear 
MsgBox "Sheet named in " & rngB(r).Address & " does not exist.", vbInformation 
Resume NxtC 

End Sub 
+0

謝謝@David Zemens,但我也得到了它的工作。真的非常感謝你這麼快就完成了這個項目。 – 2013-02-15 15:28:26