Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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 删除联合范围错误_Excel_Vba - Fatal编程技术网

Excel 删除联合范围错误

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

我在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 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即可更改循环方向)非常感谢!