excel vba范围相对偏移范围
我试图在工作表中设置区域的格式 我正在使用工作表进行更改,以便它总是在更改时更新 我的目标是观察一个区域中的所有细胞。如果当前单元格为空且左侧单元格的数值为0,则我想在当前单元格中输入文本“N/A” 由于无法使用偏移量,我的尝试失败excel vba范围相对偏移范围,vba,excel,Vba,Excel,我试图在工作表中设置区域的格式 我正在使用工作表进行更改,以便它总是在更改时更新 我的目标是观察一个区域中的所有细胞。如果当前单元格为空且左侧单元格的数值为0,则我想在当前单元格中输入文本“N/A” 由于无法使用偏移量,我的尝试失败 Private子工作表\u更改(ByVal目标作为范围) 将updateCells变暗为范围 暗淡的迈塞尔山脉 设置updateCells=范围(“B1:M1000”) 对于updateCells中的每个myCell “下一行错了!! 如果myCell.Offset
Private子工作表\u更改(ByVal目标作为范围)
将updateCells变暗为范围
暗淡的迈塞尔山脉
设置updateCells=范围(“B1:M1000”)
对于updateCells中的每个myCell
“下一行错了!!
如果myCell.Offset(0,-1).Value=0,则
myCell.Interior.ColorIndex=4
如果结束
下一个
端接头
任何指导都将不胜感激。我将测试目标细胞是否在
范围(“B1:M1000”)
内。从工作表\u Change
事件更改活动表上的值时,应始终关闭事件
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim r As Range
For Each r In Target.Cells
If Not Intersect(r, Range("B1:M1000")) Is Nothing Then
If r.Value = "" And Not r.Offset(0, -1).Value = "" And r.Offset(0, -1).Value = 0 Then
r.Value = "N\A"
r.Interior.ColorIndex = 4
Else
r.Interior.ColorIndex = -4142
End If
Next
Application.EnableEvents = True
End Sub
我会测试目标的单元格是否在
范围(“B1:M1000”)
内。从工作表\u Change
事件更改活动表上的值时,应始终关闭事件
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim r As Range
For Each r In Target.Cells
If Not Intersect(r, Range("B1:M1000")) Is Nothing Then
If r.Value = "" And Not r.Offset(0, -1).Value = "" And r.Offset(0, -1).Value = 0 Then
r.Value = "N\A"
r.Interior.ColorIndex = 4
Else
r.Interior.ColorIndex = -4142
End If
Next
Application.EnableEvents = True
End Sub
我会走这条路
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, myRng As Range
On Error GoTo ExitSub '<--| be sure to exit sub in a managed way and restore events handling
Set myRng = Intersect(Target, Range("B1:M1000")).SpecialCells(xlCellTypeBlanks) '<--| get blank changed cells belonging to relevant range
Application.EnableEvents = False '<--| turn rvents handling ofF
For Each rng In myRng '<--| loop through filtered range only
If Not rng.Offset(0, -1).Value = "" And rng.Offset(0, -1).Value = 0 Then
rng.Value = "N\A"
rng.Interior.ColorIndex = 4
Else
rng.Interior.ColorIndex = -4142
End If
Next
ExitSub:
Application.EnableEvents = True '<--| turn events handling on
End Sub
Private子工作表\u更改(ByVal目标作为范围)
变暗rng作为范围,myRng作为范围
如果出错,转到ExitSub'我会走这条路
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, myRng As Range
On Error GoTo ExitSub '<--| be sure to exit sub in a managed way and restore events handling
Set myRng = Intersect(Target, Range("B1:M1000")).SpecialCells(xlCellTypeBlanks) '<--| get blank changed cells belonging to relevant range
Application.EnableEvents = False '<--| turn rvents handling ofF
For Each rng In myRng '<--| loop through filtered range only
If Not rng.Offset(0, -1).Value = "" And rng.Offset(0, -1).Value = 0 Then
rng.Value = "N\A"
rng.Interior.ColorIndex = 4
Else
rng.Interior.ColorIndex = -4142
End If
Next
ExitSub:
Application.EnableEvents = True '<--| turn events handling on
End Sub
Private子工作表\u更改(ByVal目标作为范围)
变暗rng作为范围,myRng作为范围
错误转到ExitSub'Offset(-1,0)
正在查看上方单元格,而不是左侧的Offset(0,-1)
您好,斯科特,谢谢您的反馈。我抄错了。然而,即使这种改变也是错误的。我的设置和循环范围是否正确?Offset(-1,0)
正在查看上方的单元格,而不是左侧的Offset(0,-1)
您好,斯科特,谢谢您的反馈。我抄错了。然而,即使这种改变也是错误的。我的设置和循环范围正确吗?很好,但我建议在错误之前。SpecialCells@Slai,你说得对。这也使得后续的“如果myRng…”变得不必要。Editednice,但我会在之前推荐错误。SpecialCells@Slai,你说得对。这也使得后续的“如果myRng…”变得不必要。编辑