Dynamic 用于相交目标的动态范围
我正在制作一个利用用户输入填写表格的电子表格。此数据输入到一个表中,表中需要许多列。我有一个命令按钮,用于创建新行并插入新行项目所需的所有数据验证(下面是一个示例) 我的问题围绕一个特定的a列(蓝色圆圈),其他单元格依赖于“是”或“否”字符串。如果列中有“是”,则相邻单元格将执行某些操作。如果列有“否”,则相邻单元格会执行不同的操作 当这个表成行增长时,我关注的列范围将动态变化。如果工作表在该动态范围内使用“工作表更改(ByVal目标为范围)”子项遇到更改事件,我希望VBA代码运行 现在,我在commandbutton\u click sub中定义动态范围,因为每次单击按钮时,都会添加一个新行,因此我需要电子表格知道我的范围已更改(请参阅下面的代码) 然后,在另一个子模块中输入代码,该代码将“检查”动态范围的值是否有变化,并给出“是”或“否”的回答。这就是我输入定义的动态范围的地方(请参见下面的代码) 有人能帮我解决我收到的错误消息“类型不匹配”吗?我是否在intersect代码中正确输入了动态范围 多谢各位 ****更新-更多信息供澄清***** 我在正在评估的数组中添加了一些信息。下面是我的电子表格的快照 当我进入调试模式时,我正在查看我的“本地表”,并看到我正在成功地捕获数组中的信息Dynamic 用于相交目标的动态范围,dynamic,range,intersect,Dynamic,Range,Intersect,我正在制作一个利用用户输入填写表格的电子表格。此数据输入到一个表中,表中需要许多列。我有一个命令按钮,用于创建新行并插入新行项目所需的所有数据验证(下面是一个示例) 我的问题围绕一个特定的a列(蓝色圆圈),其他单元格依赖于“是”或“否”字符串。如果列中有“是”,则相邻单元格将执行某些操作。如果列有“否”,则相邻单元格会执行不同的操作 当这个表成行增长时,我关注的列范围将动态变化。如果工作表在该动态范围内使用“工作表更改(ByVal目标为范围)”子项遇到更改事件,我希望VBA代码运行 现在,我在
我需要用这个数组运行intersect命令,这个问题已经解决了。下面是我用来确定动态范围的代码,然后代码计算该范围的变化
Dim dyString As String
Dim dyRange As Range
Dim LastRowEntry_1 As Integer
Dim i As Integer
LastRowEntry_1 = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(-2, 0).row + 1
dyString = "G8:G" & LastRowEntry_1
Set dyRange = Range(dyString)
If Not Intersect(Target, dyRange) Is Nothing Then
For i = 1 To 6
If ActiveCell.Value = "NO" Then
Target.Offset(0, i).Interior.ColorIndex = 23
Target.Offset(0, i).Font.Color = vbWhite
Target.Offset(0, i).Value = "N/A"
Target.Offset(0, i).Locked = True
ElseIf ActiveCell.Value = "YES" And ActiveCell.Offset(0, i).Value = "N/A" Then
Target.Offset(0, i).Value = ""
Target.Offset(0, i).Interior.ColorIndex = 0
Target.Offset(0, i).Font.Color = vbBlack
Target.Offset(0, i).Locked = False
总结如下:
- 不管怎样,我的动态范围始终从单元格“G8”开始
- 在此之后,范围将动态变化。根据具体情况,范围将增大或减小 因此,我的“LastRowEntry_1”决定了最后一个单元格条目的位置 由于我的电子表格上有一些页脚信息,不得不将其抵消)
- 我创建了一个字符串,可以将固定单元格的范围与动态单元格的范围结合起来 牢房
- 然后我将该字符串设置为一个范围
- 然后基于目标范围是否相交,我运行一个“For”循环来执行 我的条件格式
Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'This code checks to see if the Device is polled by RTU
If Not Intersect(Target, Range(RTUTable)) Is Nothing Then
If ActiveCell.Value = "NO" Then
"DO SOMETHING"
Else
"DO SOMETHING"
End If
End If
Application.EnableEvents = True
End Sub
Dim dyString As String
Dim dyRange As Range
Dim LastRowEntry_1 As Integer
Dim i As Integer
LastRowEntry_1 = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(-2, 0).row + 1
dyString = "G8:G" & LastRowEntry_1
Set dyRange = Range(dyString)
If Not Intersect(Target, dyRange) Is Nothing Then
For i = 1 To 6
If ActiveCell.Value = "NO" Then
Target.Offset(0, i).Interior.ColorIndex = 23
Target.Offset(0, i).Font.Color = vbWhite
Target.Offset(0, i).Value = "N/A"
Target.Offset(0, i).Locked = True
ElseIf ActiveCell.Value = "YES" And ActiveCell.Offset(0, i).Value = "N/A" Then
Target.Offset(0, i).Value = ""
Target.Offset(0, i).Interior.ColorIndex = 0
Target.Offset(0, i).Font.Color = vbBlack
Target.Offset(0, i).Locked = False