Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel vba范围相对偏移范围_Vba_Excel - Fatal编程技术网

excel vba范围相对偏移范围

excel vba范围相对偏移范围,vba,excel,Vba,Excel,我试图在工作表中设置区域的格式 我正在使用工作表进行更改,以便它总是在更改时更新 我的目标是观察一个区域中的所有细胞。如果当前单元格为空且左侧单元格的数值为0,则我想在当前单元格中输入文本“N/A” 由于无法使用偏移量,我的尝试失败 Private子工作表\u更改(ByVal目标作为范围) 将updateCells变暗为范围 暗淡的迈塞尔山脉 设置updateCells=范围(“B1:M1000”) 对于updateCells中的每个myCell “下一行错了!! 如果myCell.Offset

我试图在工作表中设置区域的格式

我正在使用工作表进行更改,以便它总是在更改时更新

我的目标是观察一个区域中的所有细胞。如果当前单元格为空且左侧单元格的数值为0,则我想在当前单元格中输入文本“N/A”

由于无法使用偏移量,我的尝试失败

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…”变得不必要。编辑