【问题标题】:How to format/color cells based on contents of other cells如何根据其他单元格的内容格式化/着色单元格
【发布时间】:2015-11-20 18:20:36
【问题描述】:

我正在尝试自动化 Excel 工作簿,以帮助节省制定员工工作计划的时间。我有两张床单。 Sheet1 包含一个简单的表,用于创建该月的预期计划(第一列中的员工姓名,顶行中的日期,每天都标有“WORKING”、“ON CALL”、“OFF”等),另一张表包含一个带有颜色代码的表格,用于跟踪计划在几周内的实际执行情况。我需要 Sheet2 根据在 Sheet1 上手动计划的时间表来更新颜色代码,这样我就可以节省更少的公司时间手动颜色编码单元格。

我不想使用条件格式,因为我相信您不能覆盖它为单元格提供的格式(在这种情况下,员工打电话而不是在他预定的上班日期和在 Sheet2 上这需要被记录 - 使用不同的颜色代码)。我只需要帮助找出一些可以帮助加快速度并减少公司时间浪费的手动颜色编码单元格的宏。

这次我不想录制宏,因为每次更新/制定时间表时,姓名和工作天数都可能/将会有所不同。

【问题讨论】:

    标签: vba excel colors


    【解决方案1】:

    这是你可以做的事情。

    右键单击工作表 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
    

    【讨论】:

    • 非常感谢!效果很好!如果在不同长度的月份中添加或删除更多列,是否有办法将其应用于工作表中的每个 [填充] 列?我似乎无法让循环为我工作。或者循环在私人潜艇中不起作用..?
    • 我不确定你在问什么。
    • 此代码完美运行,但仅适用于第一列(也就是日程的第一天)。我想我可以多次复制和粘贴代码并将 Target.Column 编号每次增加一,以便将剩余的列放在相同的代码下(至少 31 列,因为最长的月份将有 31 天的时间安排),但我想知道是否有一种方法可以让代码在没有 31+ 个您提供的代码副本的情况下做到这一点?我一直在思考一个循环,直到最后一列是空白的,但我所有的尝试都不起作用,我不知道我做错了什么。
    • 而不是if target,column=1 then 使用If Not Application.Intersect(Target, Me.Range("A1:C10")) Is Nothing Then 并设置你想要的范围。
    猜你喜欢
    • 2019-09-30
    • 2017-02-25
    • 1970-01-01
    • 2013-04-09
    • 2014-09-13
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多