excel - 将值从工作表传递到模块
问题描述
我的工作表中有这个:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim D_KeyCells As Range
Set D_KeyCells = Range("D6:D16")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Call D_CheckRow()
End If
End Sub
但我只需要在选择并更改 D 列时运行此操作。
因为我需要根据更改的单元格列进行多次检查。
所以如果细胞
D6 被更改然后调用 D_CheckRow
E6 被改变然后调用 E_CheckRow
F6 改变然后调用 F_CheckRow
G6 被改变然后调用 G_CheckRow
等等。。
我确信有一种更简单的方法来编写代码,因此非常感谢任何帮助。
更新:目标是检查一旦填充了单元格,它就会运行子模块
以下是我正在检查的范围:
Set D_KeyCells = Range("D6:D16")
Set E_KeyCells = Range("E6:E16")
Set G_KeyCells = Range("G6:G16")
Set I_KeyCells = Range("I6:I16")
Set J_KeyCells = Range("J6:J16")
Set K_KeyCells = Range("K6:K16")
Set L_KeyCells = Range("L6:L16")
Set M_KeyCells = Range("M6:M16")
因此,如果 D 单元格发生更改,则运行 D_CheckRow,如果它是 E 单元格,则运行 E_CheckRow,等等。
解决方案
您可以使用Application.Run
,如:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim D_KeyCells As Range
Set D_KeyCells = Range("D6:G6")
If Not Application.Intersect(D_KeyCells, Target) Is Nothing Then
Application.Run (Split(Target.Address, "$")(1) & "_CheckRow")
End If
End Sub
或者根据 Mathieu 的评论使用参数方法,如果我没有进入这个特定的兔子洞,我不得不说这是我倾向于采用的方法。
推荐阅读
- java - 如果所述子字符串包含另一个单词,则正则表达式匹配子字符串
- firebase - Firebase 动态链接替换了一些字符。是否有哪些字符正在更改的列表?
- git - 为什么我无法在预推中读取标准输入?
- r - {purrr}:如何在用完函数的所有参数时用 purrr::map() 替换一个简单的循环?
- xcode - 重命名后,XCode 项目不会在 mac 启动时自动加载
- spring-boot - 如何将待办事项中的属性标签的资源值放入application.properties
- android - Android SharedPreferences 漏洞
- linux - 如何确定在对配方进行位烘焙时生成哪个二进制文件
- linux - 无法在 bash 脚本中声明数组
- excel - 如何根据所述分隔符之间的第一个字母对 Excel 中两个分隔符之间的值求和?