![](/img/trans.png)
[英]New run time errors in older code 1004, 424, -2147024809 (80070057)
[英]run time error 1004 and 424
我在補償范圍變量時遇到問題。
我有2張不同的紙,一張帶有原始紙,另一張用於制作“印刷版”。
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 '的地址是什么?
我認為沒有細胞可去。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.