Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/152.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
Excel 自动启动宏并检查一些参数_Excel_Vba_Foreach - Fatal编程技术网

Excel 自动启动宏并检查一些参数

Excel 自动启动宏并检查一些参数,excel,vba,foreach,Excel,Vba,Foreach,我有一个问题我想解决,但我需要帮助。我有一个excel,里面有很多信息:日期、活动、人员、时间。每个人都写自己的工作,所以表格是这样的 20/06/2013 football me 8.00 21/06/2013 football me 8.00 22/06/2013 basket me 8.00 21/06/2013 football me 8.00 22/06/2013 basket me 8.00 从周一到周五。总小时数必须为40小时,所有字段

我有一个问题我想解决,但我需要帮助。我有一个excel,里面有很多信息:
日期、活动、人员、时间
。每个人都写自己的工作,所以表格是这样的

20/06/2013  football  me  8.00 
21/06/2013  football  me  8.00
22/06/2013  basket    me  8.00 
21/06/2013  football  me  8.00
22/06/2013  basket    me  8.00 

从周一到周五。总小时数必须为40小时,所有字段必须填写完整,且没有一个字段为空!我需要一个宏,自动启动,例如在12.00,并检查它是否为每个人的工作表内的所有正确的。我怎么做?有人能帮我吗?

假设在每张工作表中,第1行有一个行标题,数据在A2:D6中。以下代码应相应地以
msgbox
的形式返回错误

Sub test()
    Dim i As Integer
    Dim j As Integer
    Dim emp As Boolean
    Dim sum As Integer
    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        emp = False
        For i = 2 To 6
            For j = 1 To 4
                If IsEmpty(ws.Cells(i, j)) Then
                    emp = True
                    'Skip the rest of cells
                    GoTo fHandler
                End If
            Next j
        Next i

fHandler:

        If emp Then
            MsgBox "Some entries are empty in " & ws.Name
        End If

        sum = WorksheetFunction.sum(ws.Range("D2:D6"))
        If sum <> 40 Then
            MsgBox "Total hours not equal to 40 in " & ws.Name
        End If

    Next
End Sub
子测试()
作为整数的Dim i
作为整数的Dim j
作为布尔值的Dim emp
点心作为整数
将ws设置为工作表
对于ActiveWorkbook.Worksheets中的每个ws
emp=False
对于i=2到6
对于j=1到4
如果是空的(ws.Cells(i,j)),那么
emp=真
“跳过其余单元格
后藤·汉德勒
如果结束
下一个j
接下来我
fHandler:
如果是emp那么
MsgBox“&ws.Name”中的某些条目为空
如果结束
sum=工作表函数.sum(ws.Range(“D2:D6”))
如果总数是40那么
MsgBox“总小时数不等于40英寸”&ws.Name
如果结束
下一个
端接头

请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。正如目前所写的,很难准确地说出你在问什么。此外,询问代码的问题必须表明对正在解决的问题的最低理解,以及一些研究和尝试。您没有演示上述任何一项,因此我投票决定按现状结束,不幸的是,我现在没有任何代码,因为这几乎是我第一次使用vba编程。如果可能的话,我需要一个“开始”。这个问题并不难;我有4个单元格:
日期、活动、人员、小时
每个单元格必须填写完整(不能为空)。从星期一到星期五的小时总数必须是40。宏可以自动启动,但也可以通过按钮启动。这对我很好。那么你想做什么呢?验证字段的宏?您希望宏检查是否输入了所有字段,如果小时数总和=40,则检查是否正确。第二步是为excel工作表中的每个人创建这些控件。同时,第一件事很好。你能上传一份电子表格的样本或者至少一张截图吗?我不知道每个人是否都有自己的电子表格,或者他们是否都列在对方的下面——如果没有看到这些信息,很难给你一个提示