2017-07-18 122 views
1

我想查找「舊值」標題下具有值「橙色」的列中的單元格數量。 但我得到的值爲0,雖然我有單元格中的值。請幫助下面的代碼。CountIf返回0值

Private Sub CommandButton1_Click() 

    Dim x As Workbook 

    Dim Wks As Worksheet 

    Dim aCell As Range 

    Dim col As Long 

    Dim Var1 

    Dim i As Integer 

    Dim a 

    Set x = Workbooks.Open("C:\*********\file.xls") 

    Set Wks = x.Worksheets("file") 

     Set aCell = Wks.Range("A1:X1000").Find(What:="Old Value", LookIn:=xlValues, LookAt:=xlWhole, _ 
        MatchCase:=False, SearchFormat:=False) 
      col = aCell.Column 

     For i = 1 To 1000 
      Var1 = Application.WorksheetFunction.CountIf(Wks.Cells(i, col), "*orange*") 

      Next i 
      MsgBox Var1 


End Sub 

回答

1

一般來說,這是一個很好的例子,可以使問題變得非常簡單。問題出在循環中,而不是在代碼的其餘部分。

您不增加var1的值。因此,它每次都被重寫。這是如何遞增的值:

Public Sub Test() 

    Dim Var1 as Long 
    Dim i As Long 

    For i = 1 To 1000 
     Var1 = Var1 + WorksheetFunction.CountIf(ActiveSheet.Cells(i, 4), "*orange*") 
    Next i 

    Debug.Print Var1 

End Sub 

結果打印在立即窗口中。

2

For此處不需要循環。取而代之的

For i = 1 To 1000 
    Var1 = Application.WorksheetFunction.CountIf(Wks.Cells(i, col), "*orange*") 
Next i 

嘗試

Var1 = Application.WorksheetFunction.CountIf(Wks.Columns(col), "*orange*")