excel - 每当更新工作表特定单元格或更新特定范围时尝试运行此代码
问题描述
我已将我的代码更新为 Worksheet Change 事件,只要Sheet15.Range("$B$2")
值发生更改或更新,我的代码就会运行。
但它不起作用我不知道为什么?
我还想要一件事下面的代码应该粘贴相同的值(被复制)
sheet8.Range(G18:G)
通过使用这种技术
lastR5 = Sheet8.Range("F" & Rows.Count).End(xlUp).Row
您的帮助将不胜感激。
我的代码。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Sheet15.Range("$B$2")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Dim lastR4 As Long
lastR4 = Sheet4.Range("E" & Rows.Count).End(xlUp).Row 'last row on E:E col
Sheet4.Range("F11:F" & lastR4).Value = Sheet15.Range("A" & _
WorksheetFunction.Match(Sheet1.Range("B7").Value, Sheet15.Range("A:A"), 0)).Offset(0, 1)
End If
End Sub
解决方案
如果事件代码属于Sheet15代码模块,请使用下一个:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$2" Then Exit Sub
Dim lastR4 As Long
lastR4 = Sheet4.Range("E" & rows.count).End(xlUp).row 'last row on E:E col
Sheet4.Range("F11:F" & lastR4).Value = Sheet15.Range("A" & _
WorksheetFunction.match(Sheet1.Range("B7").Value, Sheet15.Range("A:A"), 0)).Offset(0, 1)
End Sub
编辑:
如果 B2 单元格将保留公式的结果,您应该使用工作表 `Calculate~ 事件,这样:
Private Sub Worksheet_Calculate()
Static b2Val As String
If b2Val = "" Then b2Val = Sheet15.Range("B2").Value: GoTo OverCheck
If Sheet15.Range("B2").Value = b2Val Then Exit Sub
OverCheck:
Dim lastR4 As Long
lastR4 = Sheet4.Range("E" & rows.count).End(xlUp).row 'last row on E:E col
Sheet4.Range("F11:F" & lastR4).Value = Sheet15.Range("A" & _
WorksheetFunction.match(Sheet1.Range("B7").Value, Sheet15.Range("A:A"), 0)).Offset(0, 1)
End Sub
推荐阅读
- matlab - 如何根据MATLAB中另一个表中不同列之间的比较来删除表数据?
- pandas - Pandas 数据框中的滚动方式
- rest - 如何将变量从一个功能文件传递到另一个
- ios - 如何根据领域中的特定属性更新领域对象?
- java - 如何获取 ExtentReport-cucumber 报告实例?
- docker - 将 Hyperledger Sawtooth 客户端连接到另一台机器上的 Hyperledger Sawtooth Validator
- python - 乘以 pandas 中的浮点数 -> 逗号消失的数字
- android - 如何在画布 Android 中检测 hijaiyah 字符?
- python - 安装后导入 fastai 库时出现错误
- python-2.7 - 尽管提交,Python SQLite Insert 无法正常工作