Excel VBA – 根据来自其他工作表的事件更改单元格颜色

我对Excel和VBA编程相当陌生。 虽然我有在Visual Basic和PHP的经验。 所以基本的理解就在那里。

哇,这很难用很好的方式来解释……这可能不是解决这个问题的最好办法,但是现在我已经解决了这个问题。

总共3张。 sheet1 – 其他工作表的摘要。 Sheet2,一些数据和用户input。 Sheet3 – 数据。

用户inputsheet2中的钢筋长度。 用户还添加了其他值,增加了钢筋的重量。 在表格1中,计算负荷的概要。 其中一个单元格只显示栏上的负载。 Sheet3具有最大的加载信息。 钢筋的长度。 我希望sheet1中的摘要单元格的值大于sheet3中的最大加载值。

所以我想要一个macros运行,每当Sheet1中的单元格由sheet2中的用户input改变。 macrossearch并交叉检查值并更改sheet1中单元格的颜色。

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

为了使其更加复杂,用户可以从4个不同的加载数据的钢筋中进行select。

设置一个testing,我已经在testing表上完成了所有的testing,但我不能得到macros由于某种原因运行。

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 

结束小组

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

工作表激活:

 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