我一直在尝试编写一个代码,该代码应该执行以下操作:在工作表中循环选项卡,如果固定单元格(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,而我大卫只插入三个标签....
对出现问题的任何快速思考?
此致
马克
答案 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