运行时间错误1004和424
run time error 1004 and 424
我在偏移范围变量时遇到问题。
我有 2 个不同的 sheet,一个是原来的 sheet,另一个 sheet 用于制作 "print version"。
dim r as range
Set r = printSheet.Range("c100")
For loopcounter = 97 To 1 Step -1
If r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0 Then
Else: r.EntireRow.Delete
End If
'this code fails with runtime error 1004
Set r = printSheet.Range(r).Offset(-1)
'this code fails with runtime error 424
set r = r.offset(-1)
提前致谢。
如果你想向上移动 1 行,你应该给出两个参数:
Set r = r.offset(-1,0)
或者这样写:
Set r = r.Offset(rowOffset:=-1)
编辑:
第二个问题是这一行:
r.EntireRow.Delete
删除 r
范围,因此 r
为空。为了避免它,您可以例如:
Dim r As Range
Dim DeleteRow As Boolean
Set r = Sheet14.Range("c100")
For loopcounter = 97 To 1 Step -1
DeleteRow = Not (r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0)
'first move up
Set r = r.Offset(-1, 0)
'delete row if needed
If DeleteRow Then r.Offset(1, 0).Delete
考虑:
Sub qwerty()
Dim r As Range
Set printSheet = ActiveSheet
For loopcounter = 97 To 1 Step -1
Set r = printSheet.Cells(loopcounter, "C")
If r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0 Then
Else
r.EntireRow.Delete
End If
Next loopcounter
End Sub
您的代码的问题在于它破坏了 Range 变量!!
你能检查一下'loopcounter'变量的值是多少吗?范围'r'的地址是什么时候错误来了。
我认为没有手机可以去。
我在偏移范围变量时遇到问题。
我有 2 个不同的 sheet,一个是原来的 sheet,另一个 sheet 用于制作 "print version"。
dim r as range
Set r = printSheet.Range("c100")
For loopcounter = 97 To 1 Step -1
If r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0 Then
Else: r.EntireRow.Delete
End If
'this code fails with runtime error 1004
Set r = printSheet.Range(r).Offset(-1)
'this code fails with runtime error 424
set r = r.offset(-1)
提前致谢。
如果你想向上移动 1 行,你应该给出两个参数:
Set r = r.offset(-1,0)
或者这样写:
Set r = r.Offset(rowOffset:=-1)
编辑:
第二个问题是这一行:
r.EntireRow.Delete
删除 r
范围,因此 r
为空。为了避免它,您可以例如:
Dim r As Range
Dim DeleteRow As Boolean
Set r = Sheet14.Range("c100")
For loopcounter = 97 To 1 Step -1
DeleteRow = Not (r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0)
'first move up
Set r = r.Offset(-1, 0)
'delete row if needed
If DeleteRow Then r.Offset(1, 0).Delete
考虑:
Sub qwerty()
Dim r As Range
Set printSheet = ActiveSheet
For loopcounter = 97 To 1 Step -1
Set r = printSheet.Cells(loopcounter, "C")
If r > 0 Or r.Offset(0, 1) > 0 Or _
r.Offset(0, 2) > 0 Or _
r.Offset(0, 3) > 0 Or _
r.Offset(0, 4) > 0 Or _
r.Offset(0, 6) > 0 Or _
r.Offset(0, 7) > 0 Or _
r.Offset(0, 8) > 0 Or _
r.Offset(0, 9) > 0 Or _
r.Offset(0, 10) > 0 Or _
r.Offset(0, 11) > 0 Or _
r.Offset(0, 12) > 0 Or _
r.Offset(0, 13) > 0 Or _
r.Offset(0, 14) > 0 Or _
r.Offset(0, 15) > 0 Then
Else
r.EntireRow.Delete
End If
Next loopcounter
End Sub
您的代码的问题在于它破坏了 Range 变量!!
你能检查一下'loopcounter'变量的值是多少吗?范围'r'的地址是什么时候错误来了。
我认为没有手机可以去。