Excel 删除联合范围错误
我在rng_select.Delete行上收到错误“未设置对象或带块变量”。我尝试了Debug.Print.rng_select.address,但没有成功。我的工作表激活了-有什么想法吗Excel 删除联合范围错误,excel,vba,Excel,Vba,我在rng_select.Delete行上收到错误“未设置对象或带块变量”。我尝试了Debug.Print.rng_select.address,但没有成功。我的工作表激活了-有什么想法吗 Sub Delete() Dim wkb As Workbook Dim Command As Worksheet, Data As Worksheet, Transfer AsWorksheet, Accredited As Worksheet, FollowUp As Worksheet Dim Lce
Sub Delete()
Dim wkb As Workbook
Dim Command As Worksheet, Data As Worksheet, Transfer AsWorksheet, Accredited As Worksheet, FollowUp As Worksheet
Dim LcellData As Long, LcellTransfer As Long, LcellFollowUp As Long, LcellAccredited As Long, a As Long, b As Long
Dim rng_select As Range
Set wkb = Application.ActiveWorkbook
Set Command = wkb.Sheets("Command")
Set Data = wkb.Sheets("Data")
Set Transfer = wkb.Sheets("Transfers")
Set FollowUp = wkb.Sheets("FollowUp")
Set Accredited = wkb.Sheets("Accredited")
LcellFollowUp = FollowUp.Cells(Rows.Count, "A").End(xlUp).Row
FollowUp.Activate
For a = LcellFollowUp To 2 Step -1
If Cells(a, 8).Value = Cells(a - 1, 8).Value Then
If rng_select Is Nothing Then
Set rng_select = Cells(a, 1).EntireRow
Else
Set rng_select = Union(rng_select, Cells(a, 1).EntireRow)
End If
End If
Next a
rng_select.Delete
Exit Sub
我在rng\U select.Delete行上收到错误“未设置对象或带块变量”
您得到该错误是因为rng\u select
什么都不是。这可能是因为代码从未在If/EndIF
For循环中输入
要进行检查,请将此rng\u select.Delete
更改为
If Not rng_select Is Nothing Then
rng_select.Delete
Else
MsgBox "Range not valid"
End If
另外,请避免使用.Activate
。你可能想看看
您的代码可以写成
Sub Delete()
Dim wkb As Workbook
Dim Command As Worksheet, Data As Worksheet, Transfer As Worksheet
Dim Accredited As Worksheet, FollowUp As Worksheet
Dim LcellData As Long, LcellTransfer As Long, LcellFollowUp As Long
Dim LcellAccredited As Long, a As Long, b As Long
Dim rng_select As Range
Set wkb = Application.ActiveWorkbook
Set Command = wkb.Sheets("Command")
Set Data = wkb.Sheets("Data")
Set Transfer = wkb.Sheets("Transfers")
Set FollowUp = wkb.Sheets("FollowUp")
Set Accredited = wkb.Sheets("Accredited")
With FollowUp
LcellFollowUp = FollowUp.Range("A" & .Rows.Count).End(xlUp).Row
For a = 2 to LcellFollowUp '<~~ No need for reverse loop
If .Cells(a, 8).Value = .Cells(a - 1, 8).Value Then
If rng_select Is Nothing Then
Set rng_select = .Cells(a, 1).EntireRow
Else
Set rng_select = Union(rng_select, .Cells(a, 1).EntireRow)
End If
End If
Next a
End With
If Not rng_select Is Nothing Then
rng_select.Delete
Else
MsgBox "Range not valid. No Matching range found"
End If
End Sub
子删除()
将wkb设置为工作簿
Dim命令作为工作表,数据作为工作表,传输作为工作表
Dim作为工作表,后续作为工作表
Dim LcellData为Long,LcellTransfer为Long,LcellFollowUp为Long
昏暗的灯光被认为是长的,a是长的,b是长的
Dim rng_选择作为范围
设置wkb=Application.ActiveWorkbook
Set命令=wkb.Sheets(“命令”)
设置数据=工作表(“数据”)
设置传输=wkb.Sheets(“传输”)
设置跟进=wkb.Sheets(“跟进”)
Set ACCESTED=wkb表格(“认证”)
随附
LcellFollowUp=FollowUp.Range(“A”&.Rows.Count).End(xlUp).Row
对于a=2的LcellFollowUp,非常感谢Siddharth!(只需将a-1更改为a+1即可更改循环方向)非常感谢!