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

时间:2015-07-03 08:07:59

标签: excel vba excel-vba

我是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

End Sub

1 个答案:

答案 0 :(得分: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