首页 文章

Excel VBA - 根据其他工作表中的事件更改单元格颜色

提问于
浏览
0

我是Excel和VBA编程的新手 . 虽然我在visual basic和PHP方面都有经验 . 所以基础知识就在那里 .

哇,这很难以一种好的方式解释......这可能不是解决这个问题的最佳方法,但这就是我现在解决它的方法 .

共3张 . sheet1 - 其他工作表的摘要 . Sheet2,一些数据和用户输入 . Sheet3 - 数据 .

用户输入sheet2中钢筋的长度 . 用户还会添加其他值,以增加钢筋的重量 . 在表1中,计算了负载的摘要 . 其中一个单元格仅显示栏上的负载 . Sheet3具有最大加载信息pr . 钢筋长度 . 我希望sheet1中的摘要单元格为红色,该值大于sheet3中的最大加载量 .

因此,每当sheet1中的单元格由sheet2中的用户输入更改时,我都希望运行一个宏 . 宏搜索并交叉检查值并更改sheet1中单元格的颜色 .

解决这个问题的好方法是什么?

为了使其更复杂,用户可以从具有不同装载数据的4个单独钢筋中进行选择 .

设置我在测试表上完成的测试,但由于某种原因我无法运行宏 .

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("E4")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then

    If Range("E4").Value > Range("E14").Value Then
        Range("E4").Interior.ColorIndex = 37
    End If

End If

结束子

1 回答

  • 2

    您正在比较同一工作表中的单元格值 . 您需要提及要比较的工作表单元格 . 此外,您需要设置工作表(摘要)激活的代码和工作表(摘要)单元格值的更改 .

    工作表已激活:

    Private Sub Worksheet_Activate()
    Dim MyWorkbook As Workbook
    Dim MySummary As Worksheet
    Dim MyData As Worksheet
    
    Set MyWorkbook = ActiveWorkbook
    Set MySummary = MyWorkbook.Sheets("Summary")
    Set MyData = MyWorkbook.Sheets("Data")
    
        If MySummary.Range("E4").Value > MyData.Range("E14").Value Then
            MySummary.Range("E4").Interior.ColorIndex = 37
            Else
            MySummary.Range("E4").Interior.ColorIndex = 0
        End If
    End Sub
    

    工作表值更改:

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim MyWorkbook As Workbook
    Dim MySummary As Worksheet
    Dim MyData As Worksheet
    
    Set MyWorkbook = ActiveWorkbook
    Set MySummary = MyWorkbook.Sheets("Summary")
    Set MyData = MyWorkbook.Sheets("Data")
    
        If MySummary.Range("E4").Value > MyData.Range("E14").Value Then
            MySummary.Range("E4").Interior.ColorIndex = 37
            Else
            MySummary.Range("E4").Interior.ColorIndex = 0
        End If
    
    End Sub
    

相关问题