Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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 VBA-如果单元格与另一个单元格的内容匹配,则发出msgbox警告_Vba_Excel - Fatal编程技术网

EXCEL VBA-如果单元格与另一个单元格的内容匹配,则发出msgbox警告

EXCEL VBA-如果单元格与另一个单元格的内容匹配,则发出msgbox警告,vba,excel,Vba,Excel,我是一名学校校长,我正在尝试用excel制作一个日程管理应用程序 我每个班有一张纸,每个老师有一张 所有图纸都是相同的,并且在相同的坐标上具有重要信息 现在,我已经能够把上课时间表复制到老师的时间表上,而且效果很好。我制作学生时间表,它会自动生成老师的时间表 现在我有点问题 如果我把一个老师分配到,比如说周一8点30分1节课,然后,错误地把同一个老师分配到另一个课,它会重叠,并把第一节课交给老师。上周同一位老师同时被分配到两个班 所以我的问题是: 是否有方法(在单元格更改时)生成vba脚本,以检

我是一名学校校长,我正在尝试用excel制作一个日程管理应用程序

我每个班有一张纸,每个老师有一张

所有图纸都是相同的,并且在相同的坐标上具有重要信息

现在,我已经能够把上课时间表复制到老师的时间表上,而且效果很好。我制作学生时间表,它会自动生成老师的时间表

现在我有点问题

如果我把一个老师分配到,比如说周一8点30分1节课,然后,错误地把同一个老师分配到另一个课,它会重叠,并把第一节课交给老师。上周同一位老师同时被分配到两个班

所以我的问题是:

是否有方法(在单元格更改时)生成vba脚本,以检查单元格b29在其他工作表上是否具有相同的值,而不考虑工作表的位置和名称

例:

我把老师A分配到1班-星期一8:30 如果教师姓名和日期/小时为单元格B29,则班级为单元格d5和工作表名称

如果我在另一节课上,将同一位老师分配给b29 If,则会显示一个msgbox,上面写着“存在重叠”

我遇到的最大问题是,每年的班级和老师都会发生变化,由于课程的年份和课程/班级的数量,表格的相对位置也会发生变化


谢谢

我想代码应该是这样的: 将此代码复制到工作表(代码):

将此代码复制到模块1

Function getTime(TimeAdd As Date)

    For Each ws In Worksheets
        If ws.Name <> ActiveSheet.Name Then
            If ws.Range("B29").Value = TimeAdd Then
                Result = True
                Exit For
            End If
        End If
    Next

    If Result = True Then MsgBox "There is an overlap."

End Function
函数getTime(timeaddasdate)
对于工作表中的每个ws
如果是ws.Name ActiveSheet.Name,那么
如果ws.Range(“B29”).Value=TimeAdd,则
结果=真
退出
如果结束
如果结束
下一个
如果结果=真,则MsgBox“存在重叠。”
端函数

希望这有帮助

是有办法的,但是这个网站不是按要求编写代码的。我给你的建议是:1)在偶数“换表”下,你对刚刚分配的老师进行检查。2) 在所有其他工作表中搜索同一教师(使用对象“范围”的“查找”方法),并确保未将其分配到其他位置的同一时间段。3) 如果是这样,您将发出警告并(如果需要)删除刚才自动输入的值。谢谢!很抱歉,我没有要求按需编写代码:(我只是尝试了所有操作,但无法得出结论。我会更深入地搜索!无论如何!是否有方法参考工作表-1或+1?如工作表(1)-1或工作表(1-1)中的工作表因此,我有活动表作为参考,sue减号或加号作为参考其他表?谢谢我会尝试!谢谢你。如果你仍然有问题,请告诉我。你好,再次感谢代码。我如何使用文本进行此操作?谢谢@adhy wijaya获得它,只需删除日期:)代码工作得非常好!它是如何与单细胞协同工作的…:(我忘了说单元格b29实际上是b29:c29,有一个值列表。我已经尝试使用函数getTime(TimeAdd As Date)为工作表中的每个ws实现它,如果ws.Name ActiveSheet.Name,那么如果ws.Range(“b29:c29”).Value=TimeAdd然后Result=True结束退出如果End如果Next如果Result=True那么MsgBox“有重叠。”如果没有运气,结束函数这将如何工作?您可以将Selection.Cells.Count=1更改为Selection.Cells.Count=3。谢谢。
Function getTime(TimeAdd As Date)

    For Each ws In Worksheets
        If ws.Name <> ActiveSheet.Name Then
            If ws.Range("B29").Value = TimeAdd Then
                Result = True
                Exit For
            End If
        End If
    Next

    If Result = True Then MsgBox "There is an overlap."

End Function