if else语句循环遍历工作表的问题

时间:2014-06-04 08:46:53

标签: vba excel-vba excel

我一直在尝试编写一个代码,该代码应该执行以下操作:在工作表中循环选项卡,如果固定单元格(3,7)包含名称,则计数器应该收到+1。因此,如果在单元格(3,7)中的三个选项卡中填入某个名称,则计数器应为3。

我尝试通过以下代码实现此目的:

Public davidCount As Integer

Sub Count()

Dim i As Integer
Dim ws_count As Integer

davidCount = 0
ws_count = Worksheets.Count

For i = 1 To ws_count

//perform function
countDavid

Next i


MsgBox (davidCount)

Worksheets("Data").Cells(3, 5) = davidCount

End Sub

有功能:

Function countDavid() As String

If Cells(7, 3) = "David Stam" Then
davidCount = davidCount + 1
End If


End Function

如果我快速进行健全检查,我的代码不起作用。我得到一个值16,而我大卫只插入三个标签....

对出现问题的任何快速思考?

此致

马克

2 个答案:

答案 0 :(得分:1)

我猜你有16个工作表,名字也在第一个?

您似乎错过了切换到工作表编号i。对于预先选择的第一个工作表,条件始终为真。

答案 1 :(得分:1)

我会循环遍历工作簿中的每个工作表,如下所示,并增加一个没有单独功能的计数器:

Public Sub Count()

Dim i As Integer
Dim ws As Worksheet

'Loop through each worksheet in the current workbook
For Each ws In ThisWorkbook.Sheets
    'If the cell contains David Stam, increment i by 1
    If ws.Cells(7, 3) = "David Stam" Then
        i = i + 1
    End If
Next ws

MsgBox i

ThisWorkbook.Worksheets("Data").Cells(3, 5) = i

End Sub