Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.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
Vba 如何根据其他单元格的内容设置单元格的格式/颜色_Vba_Excel_Colors - Fatal编程技术网

Vba 如何根据其他单元格的内容设置单元格的格式/颜色

Vba 如何根据其他单元格的内容设置单元格的格式/颜色,vba,excel,colors,Vba,Excel,Colors,我正在尝试自动化Excel工作簿,以帮助节省制定员工工作计划的时间。我有两张床单。Sheet1包含一个用于创建当月计划的简单表格(第一列为员工姓名,第一行为日期,每天标记为“工作”、“待命”、“休息”等),而另一个表格包含一个带有颜色代码的表格,用于跟踪周数过去后计划的实际执行情况。我需要Sheet2根据Sheet1上手动计划的时间表更新颜色代码,这样我可以节省公司时间手动对单元格进行颜色编码 我不想使用条件格式,因为我相信您无法覆盖它提供给单元格的格式(如果员工在计划的工作日呼叫而不是进来,则

我正在尝试自动化Excel工作簿,以帮助节省制定员工工作计划的时间。我有两张床单。Sheet1包含一个用于创建当月计划的简单表格(第一列为员工姓名,第一行为日期,每天标记为“工作”、“待命”、“休息”等),而另一个表格包含一个带有颜色代码的表格,用于跟踪周数过去后计划的实际执行情况。我需要Sheet2根据Sheet1上手动计划的时间表更新颜色代码,这样我可以节省公司时间手动对单元格进行颜色编码

我不想使用条件格式,因为我相信您无法覆盖它提供给单元格的格式(如果员工在计划的工作日呼叫而不是进来,则需要在Sheet2上记录,并使用不同的颜色代码)。我只需要帮助找出一些宏,可以帮助加快事情的速度,减少浪费公司时间手动彩色编码细胞


这次我不想录制宏,因为每次更新/制定日程安排时,名称和工作日都会有所不同。

以下是您可以处理的内容

右键单击“工作表1”选项卡,选择“查看代码”复制并粘贴此代码

将第1页a列中的单元格更改为a、B或C,然后转到第2页,查看发生了什么

 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        If Target = "A" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 3
        If Target = "B" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 4
        If Target = "C" Then Sheets("Sheet2").Range(Target.Address).Interior.ColorIndex = 5
    End If
End Sub

非常感谢你!那真是太棒了!如果在不同长度的月份内添加或删除更多的列,是否有方法将其应用于工作表中的每个[填写的]列?我似乎无法找到一个循环来为我工作。或者循环在私有subs中不起作用…?我不知道你在问什么。这个代码工作得很好,但只适用于第一列(也就是日程安排的第一天)。我想我可以多次复制和粘贴代码,并将Target.Column number每次增加一个,以便将其余的列放在同一代码下(至少31列,因为最长的月份需要安排31天),但我想知道是否有一种方法可以让代码在没有您提供的31+份代码的情况下实现这一点?我一直在沿着循环的思路思考,直到最后一列为空,但我所有的尝试都不起作用,我也不知道我做错了什么。相反,如果目标是,列=1,则使用
如果不是应用程序,则使用
。Intersect(target,Me.Range(“A1:C10”))什么都不是,然后设置范围大小。