Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba CountIf返回0值_Vba_Excel - Fatal编程技术网

Vba CountIf返回0值

Vba CountIf返回0值,vba,excel,Vba,Excel,我想在“旧值”标题下找到值为“橙色”的列中的单元格数。 但是我得到的值是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 =

我想在“旧值”标题下找到值为“橙色”的列中的单元格数。 但是我得到的值是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

一般来说,这是一个很好的问题示例,可以使问题变得非常简单。问题在循环中,而不是代码的其余部分

不增加
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

结果将打印在即时窗口中。

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*")