我正在尝试创建一个宏,它将遍历整个工作簿并计算员工工作的天数。工作表的工作在几天内完成,因此所有T必须找到的日子不是零。我尝试使用COUNTIF(A11:A12,">0")
并收到错误Expected : list separator or )
。我正在使用For Each
循环来处理工作表。我想将所有信息放在工作簿末尾的新工作表中,其中包含员工姓名和工作日期。我对视觉基础很新,但对c#非常好。
我现在已经走到了这一步
Option Explicit
Sub WorksheetLoop2()
' Declare Current as a worksheet object variable.
Dim Current As Worksheet
Dim LastColumn As Integer
If WorksheetFunction.CountA(Cells) > 0 Then
' Search for any entry, by searching backwards by Columns.
LastColumn = Cells.Find(What:="*", After:=[A1], _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
End If
' Loop through all of the worksheets in the active workbook.
For Each Current In Worksheets
Current.Range("A27") = Application.WorksheetFunction.CountIf(Current.Range(Cells(11, LastColumn), Cells(16, LastColumn)), ">0")
Current.Range("A28") = Application.WorksheetFunction.CountIf(Current.Range("Al17:Al22"), ">0")
Next
End Sub
当我运行此操作时,我收到错误method range of object'_worksheet' failed
。我也无法找到在摘要表上获取所有信息的方法。
答案 0 :(得分:1)
VBA解决方案,根据您上面的上一条评论。
良好的VBA编程习惯需要始终在您的代码中使用Option Explicit,这样您就知道何时没有正确声明变量,或者有时候,如果代码不好!在这种情况下,你会发现只是写A27并不意味着你将值返回到单元格A27,而只是将你得到的值设置为变量A27。或许你可能不会确切知道,但你会发现你的问题真的很快!
此代码应该为您解决:
Option Explicit
Sub WorksheetLoop2()
'Declare Current as a worksheet object variable.
Dim Current As Worksheet
' Loop through all of the worksheets in the active workbook.
For Each Current In Worksheets
Current.Range("A27") = Application.WorksheetFunction.CountIf(Current.Range("A11:A12"), ">0")
Next
End Sub
如果有帮助,非VBA解决方案:
假设您有一个摘要表,并且每个员工都在一个单独的工作表上,A列中的天数和B列中的工作小时数,请在摘要B1的公式栏中输入公式,然后在A列中运行名称列表。 / p>