我开发了一个宏来检查范围中的值,并且根据更改之前的值,它将粗体应用于同一行的不同列中的某些值。 工作正常我很高兴abbout得到那个。 代码的一部分是这个
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells As Range
Dim valorActual As Long
Dim valorAntic As Long
Set KeyCells = Range("BF3:BF378")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
valorActual = Target.Value
valorAntic = Rows(Target.Row).Columns("BG").Value
If (valorActual > 4 And valorAntic < 5) Or (valorActual > 8 And valorAntic < 9) Or (valorActual > 12 And valorAntic < 13) Or (valorAntic > 4 And valorActual < 5) Or (valorAntic > 8 And valorActual < 9) Or (valorAntic > 12 And valorActual < 13) Then
Rows(Target.Row).Columns("C").Font.Bold = True
Rows(Target.Row).Columns("C").Font.Underline = True
Rows(Target.Row).Columns("R").Font.Bold = True
Rows(Target.Row).Columns("R").Font.Underline = True
End If
问题是,现在这样可以正常工作,我想从另一张表中查看。 换一种说法, 到目前为止,我唯一检查的是列bf。如果有新值,我会检查它。但在部署时刻,我意识到此列已更改,因为其他工作表中的另一个已更改。 我的意思是真正的变化是在另一张纸上,而bf列中的单元格是真正的变化 &#34; = anotherSheet!thecellchanged&#34; 如果这是另一张表&#34;更改后,原始工作表中的宏更改不会被调用,
所以 有没有办法检查影响第三张纸的纸张的变化,并采取=&#34; anothersheet&#34;的范围。细胞? 感谢您的网站和提前帮助
答案 0 :(得分:0)
您的代码位于ThisWorkbook
代码模块中,因此您对宏中范围所做的任何引用都将默认引用ActiveSheet,除非您使用工作表引用明确限定它们。
在这种情况下,引用是传递给事件处理程序的Sh
参数:您应该在代码中使用该参数,以确保您正在处理正确的工作表。
E.g。 :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells As Range
Dim valorActual As Long
Dim valorAntic As Long
Set KeyCells = Sh.Range("BF3:BF378")
If Not Application.Intersect(KeyCells, Target) Is Nothing Then
valorActual = Target.Value
valorAntic = Target.EntireRow.Cells(1,"BG").Value
If (valorActual > 4 And valorAntic < 5) Or (valorActual > 8 And _
valorAntic < 9) Or (valorActual > 12 And valorAntic < 13) Or _
(valorAntic > 4 And valorActual < 5) Or (valorAntic > 8 And _
valorActual < 9) Or (valorAntic > 12 And valorActual < 13) Then
With Sh.Rows(Target.Row)
.Columns("C").Font.Bold = True
.Columns("C").Font.Underline = True
.Columns("R").Font.Bold = True
.Columns("R").Font.Underline = True
End With
End If